トップ > 備忘録 > Colorプロパティ値をRGB値に変換

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 桁で表すことができる。


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