更新日:、 作成日:

VBA RGB 関数:色を取得する

はじめに

Excel VBA マクロの RGB 関数から色を取得する方法を紹介します。

RGB 関数は、RGB で示す色の値を返します。

RGB(255, 0, 0) なら赤色を返します。

RGB(0, 255, 0) なら緑色を返します。

RGB(0, 0, 255) なら青色を返します。

ビットシフトして Color から RGB に変換できます。

セルの文字色 (Font.Color) や背景色 (Interior.Color) に設定するときに使用します。

セルの色を取得するには「セルの色を取得する」をご覧ください。

RGB 関数の引数と戻り値

RGB(R, G, B)
RGBの色を取得します。

引数「R」0 ~ 255 の範囲で赤の値を指定します。
引数「G」0 ~ 255 の範囲で緑の値を指定します。
引数「B」0 ~ 255 の範囲で青の値を指定します。
戻り値の型数値型 (Long)

解説

取得した色をセルの文字色 (Font.Color) や背景色 (Interior.Color) に設定できます。透明度は指定できません。

詳しくは「セルに色を設定する」をご覧ください。

引数「R」,「G」,「B」 が 255 を超える値なら 255 になります。0 より小さい値なら「エラー 5 プロシージャの呼び出し、または引数が不正です。」が発生します。

引数の値が 0 に近いほど薄くなり、255 に近いほど濃くなります。すべて 0 なら黒色、すべて 255 なら白色になります。

主な色は ColorConstants に値が定義されています。

定数 R G B
vbBlack000
vbRed25500
vbGreen02550
vbBlue00255
vbYellow2552550
vbMagentaマゼンタ2550255
vbCyanシアン0255255
vbWhite255255255

Excel の背景色や文字色の その他の色 > ユーザー設定 から色の RGB の値を確認できます。

Color を RGB に変換

文字色 (Font.Color) や背景色 (Interior.Color) の値から RGB に変換するには、取得した値の各バイト BBGGRR がそれぞれの色の値になります。ビットシフトしてそれぞれの値を取得できます。

ビットシフトについては「ビット演算」をご覧ください。

使用例

RGB 関数の使用例を紹介します。

色を取得する

色を取得します。

' セルの文字色を赤にする
Range("A1").Font.Color = RGB(255, 0, 0)

' セルの背景色を緑にする
Range("A1").Interior.Color = RGB(0, 255, 0)

' システムカラーで色を指定する
Range("A1").Interior.Color = vbCyan

Color を RGB に変換する

色の各バイトから RGB の色に変換できます。

Dim c As Long
c = RGB(10, 20, 30)

' R
Dim r As Long
r = c And &HFF
Debug.Print(r) ' 10

' G
Dim g As Long
g = c And &HFF00&
g = g \ (2 ^ 8) ' 8 桁右へシフト
Debug.Print(g) ' 20

' B
Dim b As Long
b = c And &HFF0000
b = b \ (2 ^ 16) ' 16 桁右へシフト
Debug.Print(b) ' 30