ループ処理でInterior.Colorを調べる
ループ処理で、Interior.Color(背景色)を調べてカウントしています。
調べるセル範囲と、カウント対象の背景色を指定すると、対象のセル件数を返す関数です。
コード
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 |
'************************************************* '*処理名 :背景色セルカウント '*引数 :searchArea :検索対象となるRange '* :countColor :カウント対象となる背景色 '************************************************* Public Function CountColorCell(ByVal searchArea As Range, _ ByVal countColor As Long) As Long '------------------------------------- '変数定義 '------------------------------------- Dim targetRange As Range '繰り返し処理で対象となるセル Dim wkCount As Long '対象色のセルをカウント '------------------------------------- '初期化 '------------------------------------- 'カウント用変数をクリア wkCount = 0 '------------------------------------- '主処理 '------------------------------------- '引数で指定された検索対象のセルを、1つずつ繰り返し調べていく For Each targetRange In searchArea '対象セルの背景色と、引数で指定された色が同じ時にカウントする If targetRange.Interior.Color = countColor Then wkCount = wkCount + 1 End If Next 'カウント結果を返す CountColorCell = wkCount End Function |
引数の説明
searchArea | 検索対象となるRange |
---|---|
countColor | カウント対象となる背景色 |
使用例
最初のエクセルの例の場合、コマンドボタンのクリック処理で、関数CountColorCellを呼び、その戻り値をセルW2にセットしています。
1 2 3 4 5 |
Private Sub cmdCount_Click() Range("W2").Value = CountColorCell(ActiveSheet.Range("A2:V2"), 16776960) End Sub |
また、引数には以下の値をセットしています。
searchArea | 検索対象となるRange(“A2:V2”) |
---|---|
countColor | カウント対象となる水色(コード:16776960) |
POINT
調べたい色のコードがわからない時は、まず手作業でセルに背景色を設定しましょう。
そして、そのセルのInterior.Colorを調べれば、色コードは簡単にわかります。