ColorプロパティとRGB関数
結論を言えば、VBAのセルに対するColorプロパティは、書き込みと読み込みが一致しない。

つまり、
.Color = RGB(0,0,255) ‘ HEX で &H0000FF
で書き込んでも
読み込むと
&H0000FF で書き込んだものが &HFF0000 で戻ってくる。
RGBで書き込むと BGR で戻ってくるって怪奇な現象www
Colorプロパティの読み込み
いつまでも色を変えるのをよけるのもどうかと思ってセルの色を読み込むサブルーチンを書いてみた。Function Get_Color(ssht, sr, sc)
Dim buff
buff = Right("000000" + Hex(ssht.Cells(sr, sc).Font.color), 6)
buff = Mid(buff, 5, 2) + Mid(buff, 3, 2) + Mid(buff, 1, 2)
buff = CLng("&h" + buff)
Get_Color = buff
End Function
Function Get_BackGround(ssht, sr, sc)
Dim buff
buff = Right("000000" + Hex(ssht.Cells(sr, sc).Interior.color), 6)
buff = Mid(buff, 5, 2) + Mid(buff, 3, 2) + Mid(buff, 1, 2)
buff = CLng("&h" + buff)
Get_BackGround = buff
End Function
Get_Color で文字色、Get_BackGround で背景色を読み込む。
結果は、色の数値で返ってくる。
16進変換するときには、こう書きます。
Dim ssht,sr,sc
set ssht = ActiveSheet
sr = 1
sc = 2
Dim ColorVal
Dim ColorHex
Dim ColorHx6
Dim ColorHxU
ColorVal = Get_BackGround(ssht, sr, sc) ' 色のよみこみ
ColorHex = Hex(ColorVal) ' 16進変換
ColorHx6 = right("000000"+ColorHex,6) ' 6桁の16進に変換
ColorHxU = Ucase( ColorHx6 ) ' 大文字英数変換
Colorプロパティの設定
Colorプロパティを設定するときも長いんだよね。文字色は、Font プロパティ
背景色は、Interior プロパティ (なんで背景がインテリアなのかわからんが・・・)
ssht.cells(sr,sc).Font.Color = RGB(0,0,255)
ssht.cells(sr,sc).Interiro.Color = RGB(255,0,255)
ColorプロパティとRGB関数
エクセルVBA の セルに対する Colorプロパティは、設定時と読み込み時でパラメータの形が違うということを覚えておきたいですね。ただし、これはあきらかにおかしな仕様なので、もしかしたら 2013 以降では変わっているのかもしれない。
とりあえず、今私が使っているエクセルの 2013 では、こういった現象が出ています。
Cell 関連 サブルーチンライブラリ ダウンロード
記事内の セルの色を取り扱うサブルーチンのサブルーチンライブラリ の Cell_Line.bas です。Cell_Line.bas の詳細とダウンロードは、こちらにあります。
⇒ VBA セル色と枠線制御 Cell Line Bas サブルーチン ライブラリ