RGB値で色を設定する(Colorプロパティ)|Excel VBA |
オブジェクト内部の塗りつぶし、フォント、輪郭線、罫線などの色をRGB値を用いて設定します。
RGB値の指定には、RGB関数やQBColor関数を使用します。
構文 Object.Color 設定/取得
設定項目 | 内容 |
---|---|
Object | Interior、Font、Border、 Bordersコレクションオブジェクト [省略不可] |
次のサンプル1はRGB関数で作成されるRGB値を表す色を確認します。
Sub ColorSamp1()
Dim i As Long
For i = 3 To 10
Cells(i, 5).Interior.Color = RGB(Abs(Val(Cells(i, 2).Value)) Mod 256 _
, Abs(Val(Cells(i, 3).Value)) Mod 256 _
, Abs(Val(Cells(i, 4).Value)) Mod 256)
'---E列のセルをB、C、D列の値から作成された色で塗りつぶします
Next i
End Sub
RGB関数の第1引数は赤の割合、第2引数は緑の割合、第3引数は青の割合を、それぞれ0から255の範囲で指定します。
Excel 2003以前のバージョンではワークシート上で表現できる色が標準の色パレットに登録されている56色だけだったため、RGB関数でどんな色を指定しても色パレットにあるもっとも近い色に置き換えられていました。
Excel 2007以降のバージョンではワークシート上で表現できる色の数が1600万色に増えたため、これまでRGB関数で指定しても表示できなかった中間色も表現可能となったのです。
上のサンプル1ではセルB3~D10の範囲に0から255の範囲で値が入力されているときに、それらの値を元にして作成されたRGB値でE列のセルを塗りつぶします。
それぞれの数値を変更して、どのような指定でどんな色が作成されるか確認してみてください。
QBColor関数は、0~15の番号に対応した色のRGB値を返します。次のサンプル2はQBColor関数で作成されるRGB値の表す色を確認します。
Sub ColorSamp2()
Dim c As Range
For Each c In ActiveSheet.UsedRange
If IsNumeric(c.Value) Then _
c.Offset(0, 1).Interior.Color = QBColor(Abs(CLng(c.Value)) Mod 16)
'---cが数値なら右隣のセルをcの数値をもとに
'---QBColor関数で返される色で塗る
Next c
End Sub
QBColor関数で指定できる色は、マクロの実行結果で確認できる16種類のみです。
なお、引数に0~15以外の数値を指定すると、エラーが発生します。
Colorプロパティでは、「色なし」や「色自動」といった設定はできませんので、そのような設定を行いたい場合には、ColorIndexプロパティを設定してください。