Colorプロパティ値をRGB値に変換2012.11.14
Interior.Color等のColorプロパティを、RGBの各値に変換するコードとメモです。
ポイント
・Colorプロパティ
・RGB関数
・Hex関数
WinAPIを用い、VBAで画像を作成する場合などでは、Colorプロパティの値を、RGBの各値に変換したいことがある。Color値とRGB値の相互関係がわかれば、比較的容易に変換できる。
Excelマクロ管理ツール
サンプルコード
アクティブセルの背景色(Interior.Colorプロパティ)の値をRGBの各値に変換。
RGB関数を用い、RGBの各値を再変換。
'///宣言セクションに記述/// Type RGBNumber Red As Byte Green As Byte Blue As Byte End Type '///ここまで///
Sub Get_RGB_Sample() Dim lngColor As Long Dim typRBG As RGBNumber lngColor = ActiveCell.Interior.Color MsgBox "ActiveCell.Interior.Colorプロパティ値" & vbCrLf _ & "10進数:" & lngColor & vbCrLf & "16進数:" & Hex$(lngColor) typRBG = Color_to_RGB(lngColor) With typRBG MsgBox "Red:" & .Red & " (" & Hex$(.Red) & ")" & vbCrLf & _ "Green:" & .Green & " (" & Hex$(.Green) & ")" & vbCrLf & _ "Blue:" & .Blue & " (" & Hex$(.Blue) & ")" & vbCrLf & _ "※( )は16進数" MsgBox "RGB関数結果" & vbCrLf & _ RGB(.Red, .Green, .Blue) & _ " (" & Hex$(RGB(.Red, .Green, .Blue)) & ")" End With End Sub
Private Function Color_to_RGB(ByVal lngColor As Long) As RGBNumber With Color_to_RGB .Red = lngColor Mod 256 .Green = Int(lngColor / 256) Mod 256 .Blue = Int(lngColor / 256 / 256) End With End Function
メモ
Colorプロパティ
値の取得および設定が可能。Border、Font、Interiorオブジェクトに適用する色を設定する。色はRGB 関数によって作成された値。
RGB関数
色の RGB 値を表すLong型の値を返す。
構文:RGB(red, green, blue)
[Red]
RGB の R (赤) の割合を 0 ~ 255 の範囲の整数で必ず指定。
[Green]
RGB の G (緑) の割合を 0 ~ 255 の範囲の整数で必ず指定。
[Blue]
RGB の B (青) の割合を 0 ~ 255 の範囲の整数で必ず指定。
Hex関数
指定した値を 16 進数で表した文字列型 (String) で返す。
構文:Hex(number)
[number]
任意の数式または文字列式を必ず指定。整数でない場合、変換前の一番近い整数に丸められる。
【補足】
適切な範囲の数値の前に &H を付けて記述すると、値を直接 16 進数で記述することができる。
例:10進数→16進数
9 → &H9
10 → &HA
15 → &HF
16 → &H10
16進数
16進数は 16 を基数として表した数値(10進数の基数は 10、 2進数 は 2 )。10~15まではA~Fまでのアルファベットを使用。16進数なら 0~F までの 16種類の数字を 1 桁で表すことができる。