![同じ行の対応する範囲が空白でない場合、VBA でセルを強調表示する](https://rvso.com/image/1451242/%E5%90%8C%E3%81%98%E8%A1%8C%E3%81%AE%E5%AF%BE%E5%BF%9C%E3%81%99%E3%82%8B%E7%AF%84%E5%9B%B2%E3%81%8C%E7%A9%BA%E7%99%BD%E3%81%A7%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%80%81VBA%20%E3%81%A7%E3%82%BB%E3%83%AB%E3%82%92%E5%BC%B7%E8%AA%BF%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B.png)
列 D から DX (数量) に値がある場合、ファイルの列 B に食品名を強制しようとしています。
理由は、ファイルに存在しない新しい食品のリクエストを受け取った場合、ユーザーは一時的に食品の名前を入力してから数量を入力できるからです。これにより、オペレーターが誤って値を入力したり、追加した新しいアイテムの情報を伝え忘れたりすることがなくなります。
D6 から DX98 までのすべてのシートをチェックし、数量が見つかった場合、C の対応するセルが空であれば C を赤でマークし、ファイルにエラーがあることをシンプルな MsgBox で通知するボタンを追加することは可能ですか。
私が作業しているファイルは次のとおりです: http://s000.tinyupload.com/?file_id=00523976624440052148
答え1
マクロ/Visual Basic を開き、シートをダブルクリックして、右側に次のコードを挿入します。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wkb As Workbook
Dim wks As Worksheet
Dim wksRange As Range
Set wkb = ThisWorkbook
Set wks = ActiveSheet
For i = 6 To 98 ' rows to be sweeped
Set wksRange = wks.Range(Cells(i, 4), Cells(i, 127)) ' check from column 4 (D) to 127(DW)
'Paint grey cells on columns A to C
color_cell_a = Cells(i, 1).Interior.Color
Cells(i, 2).Interior.Color = color_cell_a
Cells(i, 3).Interior.Color = color_cell_a
'If on the row there are values
If WorksheetFunction.CountA(wksRange) <> 0 Then
itemName = Cells(i, 2)
itemPrice = Cells(i, 3)
'Change color on column B
If itemName = "" Then
Cells(i, 2).Interior.Color = RGB(184, 0, 0)
End If
'Change color on column C
If itemPrice = "" Then
Cells(i, 3).Interior.Color = RGB(184, 0, 0)
End If
End If
Next i
End Sub
カバーエリアをチェックしD6:DW98
、行に値がないかどうかを確認します。項目名そして単価何かを書き込むまで、それらのセルは赤くマークされます。
カスタマイズしたい場合、コードを変更するのは非常に簡単です。