和風スパゲティのレシピ

日本語でコーディングするExcelVBA

色をRGB値で設定する - RGB関数

セルの背景色やフォント色、図形の色などを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