VBAを使用しているうちに、目立たせたい位置に色付けをしたくなると思います。そんな時に使うのがColorプロパティです。
- 強調させる事で見栄えが良くなる
- 好きな色を選択可能
蛇足にはなりますが、私自身に色覚異常があるため何色であるかという判断が正確に出来ない事情があり、番号や文字に頼らざるを得ない状況が出てきますのでご了承ください。
ColorIndexプロパティ
ColorIndexは1~56番までの決められた番号を指定して色を設定する事ができます。
色を設定
使用する際は下の様なコードになります。赤を例にするとRange(“A2”).Interiorがオブジェクトになり、Interiorに属するプロパティとしてColorIndexがあり設定値を3と訳せます。
Range("A2").Interior.ColorIndex = 3
Range("B2").Interior.ColorIndex = 5
Range("C2").Interior.ColorIndex = 6
1~56までのColorIndex表が下の図になり、多分ダブっている色もあると思われますが、これが設定値となります。
オブジェクトのどこに色を付けるか指定
代表的な物としてFont(文字)、Interior(セル背景)、Tab(シートタブ)があります。
Sub 各種カラー()
Range("G5").Font.ColorIndex = 5
Range("I5").Interior.ColorIndex = 6
Worksheets("Sheet3").Tab.ColorIndex = 3
End Sub
ColorIndexの番号を取得
色の番号を取得したい際の手順です。変数を指定し、対象オブジェクトを選択したセルの情報を変数に代入し出力します。ここでもInteriorやFont等のほしい情報が入っているオブジェクトを選択します。
ColorIndexで情報を取得できない場合はColorのRGB形式で取得できます。
Sub 色確認()
Dim ColorNum As Long
ColorNum = Rnage("D6").Interior.ColorIndex
MsgBox ColorNum
End Sub
今回はD6のパープルを対象として背景色の情報を確認しています。結果として、ColorIndex「18」を得ることが出来ました。
Colorプロパティ
色々なColorコード
下のコードは全て「赤」を表記するのに使う物です。他にrgbRedや16進数表記の&H0000FFも「赤」を表示する物ですので、自分で判りやすい物を使用するのが良いでしょう。
Sub 同一カラー()
Range("A1").Interior.color = vbRed
Rnage("A3").Interior.color = RGB(255, 0, 0)
Range("A5").Interior.ColorIndex = 3
End Sub
vrRedは定数として決まっているので、ColorConstants.の入力後に「Ctrl+Space」を押すことで使用できる定数を絞ることが出来ます。
定数 | 色 |
---|---|
vbBlack | 黒 |
vbWhite | 白 |
vbRed | 赤 |
vbGreen | 緑 |
vbBlue | 青 |
vbYellow | 黄 |
vbMagenta | マゼンタ |
vbCyan | シアン |
RGBで色の設定
RGBは「Red」、「Green」、「Blue」の頭文字で、それぞれ0~255の256の値を設定し色を決めます。256×256×256=1,677,216色という色ってそんなにあるの?と疑問に思う程の色が設定出来ます。
ホーム→フォント→テーマの色を押し「その他の色」を選択します。
この色の設定で選んだ際に表示されるRGBが設定値になります。
色のRGB値を取得
上記で選択したカラーはRGB(102,153,255)ですので、カラー値は102×153×255=16750950になります。このカラー値を下記のコードに当て込むとRGBを取得する事ができます。
Sub セルカラー()
' 色情報取得
Dim GetColor As String
Dim color As Long
color = Range("B3").Interior.Color
' R値取得
Dim r As Integer
r = color Mod 256
' G値取得
Dim g As Integer
g = Int(color / 256) Mod 256
' B値取得
Dim b As Integer
b = Int(color / 256 / 256)
GetColor = "RGB(" & r & "," & g & "," & b & ")"
MsgBox "Color:" & color & vbLf & GetColor
End Sub
あくまで色を調べる為のコードですので、実際にはカラー値をそのままコピーした方がはるかに楽です。下記のコードで調べる必要もなくそのままコピーできます。
Sub カラーコピー()
Range("A3").Interior.Color = Range("B3").Interior.Color
End Sub
まとめ
VBAでカラーを使用するには様々な方法があります。全てを使いこなすのは大変なので、自分が扱いやすい表記方法を使って行った方が、コードを見直す際などに役立ちます。
お読みいただきありがとうございました。