Interior.Color プロパティとRGB関数
Rangeのプロパティである Interior.Color はRGB関数を使って設定する事ができます。
セルの背景色を設定できる Interior.Color はシート上でセルの背景色を変更した場合でも値を取得するのに便利です。
マクロの記録では、 Interior.Color の整数値は取得できますが、RGB関数の赤、緑、青のそれぞれの値を得る事はできません。
RGB関数が出力する整数値
RGB関数は赤、緑、青の3つの値をそれぞれ 0~225 で設定します。
結果は以下のような式で計算されて出力されます。
R値+G値×256+B値×256×256
Interior.Color の整数値からR,G,B値を取得
上記で得られた1つの整数値からR,G,B値をそれぞれ取得するには以下のようなプロシージャが考えられます。
'RGB値を得る
Function getR(ByVal cNum As Long) As Long
getR = cNum Mod 256
End Function
Function getG(ByVal cNum As Long) As Long
getG = Int(cNum / 256) Mod 256
End Function
Function getB(ByVal cNum As Long) As Long
getB = Int(cNum / 256 / 256)
End Function
これらのプロシージャは引数にInterior.Color の値を入れるとR,G,B値を得る事ができます。
あるセル(A1)に設定された背景色をRGB値で取得するには以下のようにします。
Sub testColor()
Dim cNum As Long
cNum = Range("A1").Interior.Color
Range("A1") = getR(cNum) & "," & getG(cNum) & "," & getB(cNum)
End Sub
Interior.Color で「塗りつぶしなし」は設定できない
Interior.Colorでは、16777216色(256の3乗)が指定できます。ただし「塗りつぶしなし」の指定はできませんので注意が必要です。
「塗りつぶしなし」の指定は、Rangeのプロパティである、Interior.ColorIndex を使います。こちらは56色の指定しかできませんが、その他に「塗りつぶしなし」の指定ができます。

「塗りつぶしなし」を指定するには以下のようにします。
Range("A1").Interior.ColorIndex = xlNone
xlNone は定数で、0を指定しても同じです。
Interior.Colorで「塗りつぶしなし」を指定することはできませんが、セルの背景色を取得すると 16777215 が得られます。これは RGB(255,255,255) と同じで「白」を取得したのと同じです。
ただし、あくまで「白」と「塗りつぶしなし」は別物になりますので注意してください。