ループ処理でFont.Colorを調べる
ループ処理で、Font.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 CountColorChar(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.Font.Color = countColor Then wkCount = wkCount + 1 End If Next 'カウント結果を返す CountColorChar = wkCount End Function |
引数の説明
searchArea | 検索対象となるRange |
---|---|
countColor | カウント対象となる文字色(整数値) |
次のように「色を整数値で指定」「色をRGBで指定」する使い方ができます。
実行後、A1からB5の範囲内の、赤字セルの件数をセルD2に出力します。
使用例:色を整数値で指定
文字色を表す整数値がわかっている場合は、整数値を引数で渡します。
1 2 3 4 |
'赤字のセル数をD2に出力 Range("D2").Value = CountColorChar(ActiveSheet.Range("A1:B5"), 255) |
POINT
調べたい色のコードがわからない時は、まず手作業でセルに文字色を設定しましょう。そして、そのセルのFont.Colorを調べれば、色コードは簡単にわかります。
使用例:色をRGBで指定
RGB値しかわからない場合は、RGB関数を使って引数で渡します。
1 2 3 4 |
'赤字のセル数をD2に出力 Range("D2").Value = CountColorChar(ActiveSheet.Range("A1:B5"), RGB(255, 0, 0)) |