セルの色番号を取得する関数

セルの前景色(フォント色)や背景色のインデックス番号*1を取得する関数。業務で必要になったんで作った。既出も既出でしょうが一応。

コード

Option Explicit

Function CELLCOLOR(ByVal Target As Range _
                 , ByVal Mode As Long) As Long

    Dim lngColorId As Long
    
    On Error Resume Next

    '第1引数にセル以外のものが引数で渡された場合はexit
    If TypeName(Target) <> "Range" Then Exit Function
    'セルの数が2つ以上の場合もexit
    If Target.Count > 1 Then Exit Function
    '第2引数が 0 or 1 でない場合もexit
    If Not (Mode = 0 Or Mode = 1) Then Exit Function
    
    If Mode = 0 Then
        lngColorId = Target.Interior.ColorIndex
    Else
        lngColorId = Target.Font.ColorIndex
    End If
    
    CELLCOLOR = lngColorId
    
End Function

使い方


↑を見てもらえばokかと。2番目の引数を「1」にすると、前景色を返します。

注意点

条件付書式によって付けられている色は取得出来ません。

家帰ったらアドインにします。

*1:その色に対してExcelが内部的に決めている番号。