Colorプロパティ値をRGB値に変換2012.11.14 [更新日]2024.12.04
Interior.Color等のColorプロパティを、RGBの各値に変換するコードとメモです。
ポイント
・Colorプロパティ
・RGB関数
・Hex関数
セルやフォントのColorプロパティの値には、RGB関数で作成された整数値が設定されている。
Colorプロパティの値はRGB関数で作成できるが、Colorプロパティの値からRGBの各値を求めたいときがある。
Colorプロパティの値とRGB値の関係性がわかれば、比較的容易に変換できる。
※ ユーザー操作では「その他の色」→「ユーザー設定」タブでRGBの各値を確認できる
Excelマクロ管理ツール
サンプルコード
アクティブセルの背景色(Interior.Colorプロパティ)の値をRGBの各値に変換。RGB関数を用い、RGBの各値を再変換。
[サンプルコード実行例]
Sub アクティブセルの背景色をRGBで表示する() '--------------------------------------- ' アクティブセルの背景色を取得 '--------------------------------------- Dim lngColorNumber As Long lngColorNumber = ActiveCell.Interior.Color '--------------------------------------- ' カラー番号表示 '--------------------------------------- MsgBox "AvtiveCell.Interior.Colorプロパティ値" & vbLf & _ " 10進数:" & lngColorNumber & vbLf & _ " 16進数:" & Hex$(lngColorNumber) '--------------------------------------- ' RGB各値取得 '--------------------------------------- Dim lngRed As Long Dim lngGreen As Long Dim lngBlue As Long '《色番号をRGBに変換》 ' ・ 引数1 : 色番号 ' ・ 引数2 : Red の値が代入される戻り値 ' ・ 引数3 : Green の値が代入される戻り値 ' ・ 引数4 : Blue の値が代入される戻り値 Call convertColorNumbersToRGB(lngColorNumber, lngRed, lngGreen, lngBlue) '--------------------------------------- ' RGBを表示 '--------------------------------------- MsgBox "RGBの各値" & vbLf & _ " Red :" & lngRed & " ( " & Hex$(lngRed) & " ) " & vbLf & _ " Green:" & lngGreen & " ( " & Hex$(lngGreen) & " ) " & vbLf & _ " Blue :" & lngBlue & " ( " & Hex$(lngBlue) & " ) " & vbLf & _ " ※ ( ) は16進数" & vbLf & _ vbLf & _ "RGB関数結果" & vbLf & _ " " & RGB(lngRed, lngGreen, lngBlue) & " ( " & Hex$(RGB(lngRed, lngGreen, lngBlue)) & " ) " End Sub
'----------------------------------------------------------------- ' 色番号をRBGに変換 '----------------------------------------------------------------- '[引数] ' ColorNumber:色番号 対応範囲:0 - 16777215 ' Red :R の戻り値 ' Green :G の戻り値 ' Blue :B の戻り値 '[戻り値] ' 変換成否 成功:True 失敗:False '[作成日]2012.11.14 [更新日]2024.12.03 ' https://excel.syogyoumujou.com/memorandum/rgb.html '----------------------------------------------------------------- Function convertColorNumbersToRGB(ByVal ColorNumber As Long, _ ByRef Red As Long, _ ByRef Green As Long, _ ByRef Blue As Long) As Boolean ' カラー番号が対応範囲外の場合は抜ける If ColorNumber < 0 Or 16777215 < ColorNumber Then Exit Function ' カラー番号からRGBを算出 Red = ColorNumber Mod 256 Green = Int(ColorNumber / 256) Mod 256 Blue = Int(ColorNumber / 256 / 256) ' 戻り値設定(変換成功) convertColorNumbersToRGB = True End Function
メモ
Colorプロパティ
値の取得および設定が可能。Border、Font、Interiorオブジェクトに適用する色を設定する。
色値はRGB 関数によって作成された値。
[参考]Microsoft Learn Challenge Interior.Color プロパティ (Excel)
RGB関数
色の RGB 値を表すLong型の値を返す。
構文:RGB(red, green, blue)
[Red]
RGB の R (赤) の割合を 0 ~ 255 の範囲の整数で必ず指定。
[Green]
RGB の G (緑) の割合を 0 ~ 255 の範囲の整数で必ず指定。
[Blue]
RGB の B (青) の割合を 0 ~ 255 の範囲の整数で必ず指定。
Hex関数
指定した値を 16 進数で表した文字列で返す。
[参考]Microsoft Learn Challenge Hex関数
構文:Hex(number)
[number]
任意の数式または文字列式を必ず指定。整数でない場合、変換前の一番近い整数に丸められる。
【補足①】
Hex関数に追加している「$」は戻り値の方をString型とするもので、処理が若干速くなる。
【補足②】
適切な範囲の数値の前に &H を付けて記述すると、値を直接 16 進数で記述することができる。
10進数 | 16進数 | |
---|---|---|
9 | &H9 | |
10 | &HA | |
15 | &HF | |
16 | &H10 | |
20 | &H14 |
16進数
16進数は 16 を基数として表した数値(10進数の基数は 10、 2進数 は 2 )。10~15まではA~Fまでのアルファベットを使用。16進数なら 0~F までの 16種類の数字を 1 桁で表すことができる。