セルの背景色やフォント色、図形の色などをRGB指定で着色する、
RGB関数について解説します。
基本構文
設定したいオブジェクト.Color = RGB(赤, 緑, 青)
各色には0~255の整数を指定します。
サンプルコード
' セルの背景色 Range("A1").Interior.Color = RGB(200, 200, 200) ' セルの文字色 Range("A1").Font.Color = RGB(255, 0, 0) ' セルの枠線の色 Range("A1").Borders.Color = RGB(0, 128, 255) ' シートのタブ色 Worksheets("○○").Tab.Color = RGB(255, 200, 0) ' シェイプの塗りつぶし色 Shapes("Rectangle 1").Fill.ForeColor.RGB = RGB(100, 200, 255) ' シェイプの線の色 Shapes("Rectangle 1").Line.ForeColor.RGB = RGB(0, 150, 100)
解説
Excel上の各オブジェクトをRGB指定で着色したい場合は、
対象のオブジェクトのColorプロパティにRGB関数を代入します。
※ プロパティはForeColor/BuckColorなどの場合もあります。
ただ指定するだけなら単純なコードですね。
RGB関数の返す値
RGB関数が何を返しているかを調べてみると、
13158600のような大きな整数であることが分かります。
Debug.Print RGB(200,200,200) ' 13158600 が表示されます。
これはR + G × 256 + B × 256 × 256で計算される数値で、
3桁の256進数にすることで一つの値でRGB値を管理できるようになっています。
ここで重要になるのが、
この値を直接Colorプロパティ代入しても着色ができるという点です。
' ↓同じ処理 Range("A1").Interior.Color = RGB(200, 200, 200) Range("A1").Interior.Color = 13158600
この仕様を活用することで、RGB値をLong型の定数や変数で扱うことができます。
Const 灰色 = 13158600 Range("A1").Interior.Color = 灰色
RGB値は整数であるため、Enumで管理できるというのもポイントですね。
' モジュール上部や汎用関数モジュールで定義 Public Enum Colorテキスト色 灰 = 8421504 赤 = 255 橙 = 3243501 黄 = 49407 緑 = 5287936 青 = 12611584 紫 = 13369446 End Enum ' 実際に使用するコード Range("A1").Font.Color = Colorテキスト色.青

また、Excel上で現在着色されている色をそのまま使いたい場合は、
以下のようにそのRGB値を直接調べることができます。
' イミディエイトウィンドウで選択セルの背景色を調べる ?Selection.Interior.Color ' ← 13158600 が表示される ' 調べた色をそのまま代入する Range("A1").Interior.Color = 13158600
この活用ができると、RGBの各値を調べる必要がなくなります。
RGB関数とRGB値の仕様はしっかりと覚えておきましょう。
RGB値からR,G,B各色の値を調べる
上記の通りRGB値があればそれをそのまま使って着色できますので、
通常はRGB値から各色の値を調べる必要はありません。
それでも各色の値を調べる必要が出てしまった場合は、
以下のコードで計算することができます。
Dim RGB値 As Long RGB値 = Range("A1").Interior.Color Dim R As Long, G As Long, B As Long R = RGB値 Mod 256 G = Int(RGB値 / 256) Mod 256 B = Int(RGB値 / 256 / 256)
この計算の詳しい解説はこちらの記事をご参照ください。
www.limecode.jp