Colorプロパティの値を見ても色が判別できない
Colorプロパティには色の値をLong型の整数値で設定します。
以下のようにマクロの自動実行でセルの文字色を設定した際にColorプロパティにLong型の値が設定されます。
1 2 3 4 5 6 7 |
With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 16751001 .TintAndShade = 0 .PatternTintAndShade = 0 End With |
しかし、このように値から色が読み取れません。
以下の関数はColorプロパティに設定するLong型の値をRGB関数のRed,Green,Blueの内容に変換します。比較用としてHex関数で16進数の値も出力しています。
サンプルコード
Colorの値をRGB関数の各色に変換する関数です。
引数1:(IN)Colorプロパティに設定されているLong型の値
引数2:(OUT)変換後の赤色の値
引数3:(OUT)変換後の緑色の値
引数4:(OUT)変換後の青色の値
1 2 3 4 5 6 7 8 9 10 |
Sub GetRGBValue(lColorValue, Red, Green, Blue) Red = lColorValue Mod 256 Green = Int(lColorValue / 256) Mod 256 Blue = Int(lColorValue / 256 / 256) Debug.Print "赤:" & Red Debug.Print "緑:" & Green Debug.Print "青:" & Blue Debug.Print Hex(lColorValue) End Sub |
上記関数の呼び出しテスト関数です。
1 2 3 4 5 6 7 8 |
Sub GetRGBValueTest() Dim Red Dim Green Dim Blue Call GetRGBValue(51616, Red, Green, Blue) Call GetRGBValue(16751001, Red, Green, Blue) End Sub |
補足ですが、RGB関数の表記は名前の通り赤、緑、青の順ですが、16進数表記は青、緑、赤の順になり、赤と青がRGB関数と16進数では逆になります。