ループ処理で条件判断と背景色をセット
セルの値が条件と一致する時に、セルの背景色を設定する関数です。戻り値として、一致したセルの件数を返します。
「セルの条件」、「調べるセル範囲」、「背景色」が指定できます。
調べるセル範囲に、条件に一致するセルが複数ある場合、一致するセル全ての背景色をまとめて設定します。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
'************************************************* '*処理名 :条件と一致するセルの背景色を設定 '*引数 :judgmentValue:判定条件の値 '* :searchArea :検索対象となるRange '* :backColor :カウント対象となる背景色 '************************************************* Public Function SetBackColor(ByVal judgmentValue As String, _ ByVal searchArea As Range, _ ByVal backColor As Long) As Long '------------------------------------- '変数定義 '------------------------------------- Dim targetRange As Range '繰り返し処理で対象となるセル Dim wkCount As Long '判定と一致したセルをカウント '------------------------------------- '初期化 '------------------------------------- 'カウント用変数をクリア wkCount = 0 '------------------------------------- '主処理 '------------------------------------- '引数で指定された検索対象のセルを、1つずつ繰り返し調べていく For Each targetRange In searchArea '対象セルの値と、引数judgmentValueの値が同じ時、背景色をセット If targetRange.Value = judgmentValue Then targetRange.Interior.Color = backColor wkCount = wkCount + 1 End If Next 'カウント結果を返す SetBackColor = wkCount End Function |
引数の説明
judgmentValue | 判定条件の値 |
---|---|
searchArea | 検索対象となるRange |
backColor | 設定する背景色 |
使用例
【実行前】
テスト結果の一覧で、100点だった場合、背景色に水色をセットします。【実行前】のエクセルを見ると分かりますが、調べる範囲はセルのB2~F4の範囲になります。
1 2 3 4 5 6 7 |
Dim cnt As Long cnt = SetBackColor(100, Range("B2:F4"), RGB(0, 255, 255)) MsgBox cnt & "件のデータが条件に一致しました。" |
【実行後】
メッセージでは、背景色をセットした件数が表示されます。
背景色の指定にはRBG関数を使って、赤・緑・青の数値を設定しています。VBAにはカラー定数も用意されているので、上の使用例3行目にあるRGB(0, 255, 255)を、次のようにvbCyanとプログラミングしても同じ結果になります。
1 2 3 |
cnt = SetBackColor(100, Range("B2:F4"), vbCyan) |
その他のカラー定数や、RBG値については、VBAカラー一覧(組み込み定数、RGB値)|色見本ありを参考にしてください。
https://excel-toshokan.com/vba-color-list/