#344 RGB値をRとGとBの16進に分割変換する方法 VBA

RGB関数を使うと、Red、Green、Blueの色の三要素を各々指定することで、それらが合成された色のコードを得ることができます。そこで得られた値は長整数型の値で、ForeColorやBaclColorなど、色系のプロパティにそのまま代入することができます。
また、色の設定ダイアログから返される値もRGB関数の返り値と同じ、"8388863"のような長整数型の値です。

そこでここでは、これら単一の長整数の返り値を分解し、Red、Green、Blueそれぞれの値を取得、されにそれを16進に変換した上で、HTMLの色指定に使えるような"#FF0080"という形式にするサンプルプロシージャを紹介します。

次の例では、テキストボックス"txt長整数表記"に入力された長整数型のRGB値をまず変数"lngRGB"に代入します。その値をRed、Green、Blueの3つの値に分解したあと、先頭に"#"を付けてもう1つのテキストボックス"txt16進表記"に代入します。

Private Sub txt長整数表記_AfterUpdate()
'txt長整数表記の更新後処理

  Dim lngRGB As Long
  Dim strR As String
  Dim strG As String
  Dim strB As String
  Dim strHex As String

  '入力された長整数値を取得
  lngRGB = Me!txt長整数表記

  '長整数の色表記をR・G・Bに分解
  strR = Right$("00" & Hex$((lngRGB And "&H" & "0000FF")), 2)
  strG = Right$("00" & Hex$((lngRGB And "&H" & "00FF00") / 256), 2)
  strB = Right$("00" & Hex$((lngRGB And "&H" & "FF0000") / 256 ^ 2), 2)

  'R・G・Bそれぞれの文字列を結合
  strHex = "#" & strR & strG & strB

  '結果をtxt16進表記に代入
  Me!txt16進表記 = strHex

End Sub


※RGB関数ではRed→Green→Blueの順で引数を指定しますが、そこで返される長整数型 (Long) の値は、Blue→Green→Redという順番で16進の2桁単位で格納されています。


実行例:


| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved