Memorandum

Colorプロパティ値をRGB値に変換

Interior.Color等のColorプロパティを、RGBの各値に変換するコードとメモです。

ポイント

・Colorプロパティ
・RGB関数
・Hex関数

WinAPIを用い、VBAで画像を作成する場合などでは、Colorプロパティの値を、RGBの各値に変換したいことがある。Color値とRGB値の相互関係がわかれば、比較的容易に変換できる。


サンプルコード

アクティブセルの背景色(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 桁で表すことができる。

ページトップへ戻る
Copyright(C) 2009- 坂江保 All Rights Reserved.