#527 16進数表記でコントロールの色を設定するには? フォーム、VBA

フォーム上のテキストボックスに16進数を入力すると、その設定値に合わせてとなりの四角形コントロールの背景色が変わるという例です。

ここでいう16進数とは、よくホームページの色の設定で使われる「#FF0033」のような、「#」に続く6桁の表記のことです。6桁の構成は、2桁ごとに前からR(赤)、G(緑)、B(青)の配色の度合いを示しており、「#FF0033」であれば赤がFF、緑が00、青が33の3要素を混ぜた色合いになります。


ここではまず、次のようなデザインのフォームを用意します。
フォームデザインの例

このフォームのデザインの内容は次のようになっています。
  • 16進数を入力するテキストボックスの名前 → txt16進数
    ※ここでは#は入力しないものとします

  • テキストボックスのIME入力モードプロパティ → ”使用不可”
    ※半角数字しか入力しないのでこの設定を行います(実際にはさらに、6桁までしか入力できないよう定型入力や入力規則プロパティも設定しておくとベターです)

  • 色を表示するための四角形コントロールの名前 → bxColor

  • 四角形コントロールの背景スタイルプロパティ → ”普通”
    ※背景色を表示するのでこの設定が必須です


次に、テキストボックスの更新後処理イベントプロシージャを次のようにします。

Private Sub txt16進数_AfterUpdate()

  Dim strColor As String
  Dim lngR As Long
  Dim lngG As Long
  Dim lngB As Long

  'テキストボックスの入力値を取得
  strColor = Me!txt16進数

  'RGBそれぞれの値を分解
  lngR = CLng("&H" & Mid$(strColor, 1, 2))
  lngG = CLng("&H" & Mid$(strColor, 3, 2))
  lngB = CLng("&H" & Mid$(strColor, 5, 2))

  '四角形コントロールの背景色を設定
  Me!bxColor.BackColor = RGB(lngR, lngG, lngB)

End Sub


実行例:
実行例実行例
実行例

※関連Tips「#342 16進数を10進数に変換するには?」
※関連Tips「#344 RGB値をRとGとBの16進に分割変換する方法」
| Index | Prev | Next |

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


Copyright © T'sWare All rights reserved