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

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

Excel Tips for Teachers

Copyright (C) 2009- 坂江 保 All Rights Reserved.