ユーザーフォームやコントロールのプロパティで色を設定する方法
ユーザーフォームや設置したコントロールの背景色や文字色などでプロパティに対して色を指定することができます。色の指定方法として Windows のシステムカラーに対応した定数や値を指定する方法と、青緑赤の各値を指定して色を指定する方法が用意されています。ここでは Excel のユーザーフォームやコントロールのプロパティで色を設定する方法について解説します。
(Last modified: )
プロパティでの色の指定方法
例えばユーザーフォームのプロパティの中で色に関する値が設定されているものとして BackColor
BorderColor
ForeColor
があります。
各プロパティの値は次のように設定されています。
BackColor &H8000000F& BorderColor &H80000006& ForeColor &H80000012&
これらはすべて Windows のシステムカラーを表す数値で色が指定されています。例えば BackColor
プロパティをクリックし、表示された値にあるドロップダウンメニューをクリックしてください。
すると BackColor
プロパティに設定されている「&H8000000F&」という色は、システムカラーの「ボタンの表面」に設定されている色ということが確認できます。
またこの画面で「パレット」をクリックすると、システムカラーではなく色の一覧の中から色を選択することができます。表示された色の中から「赤色」をクリックしてみます。
すると BackColor
プロパティの値は次のように設定されました。
BackColor &H000000FF&
この値は色を青緑赤の各値を組み合わせて指定したものとなっています。どちらの場合も「&H」で始まり「&」で終わりその間に 16 進数の数値を記述して色を指定します。
色の値のルール
このように色に関するプロパティを指定する場合はシステムカラーを表す値と青緑赤の各値を組み合わせた値の両方が設定される可能性がありますが、値の記述の仕方は次のようなルールとなっています。
色の値が「&H」のあとに「80」と続いている場合は Windows のシステムカラーを使った色の値が指定されています。各プロパティにデフォルトで設定されていた値はすべて「&H80」で始まっているので Windows のシステムカラーです。そしてそのあとに続く数値がシステムカラーの値です。
BackColor &H8000000F& BorderColor &H80000006& ForeColor &H80000012&
色の値が「&H」のあとに「00」と続いている場合は青緑赤の各値を 16 進数の 00 から FF で記述したものです。先ほどパレットで赤色を指定した場合に設定された値は「&H00」で始まっているので青緑赤の各値を指定した作成した色です。
BackColor &H0000000FF&
この場合は青が「00」、緑が「00」、赤が「FF」となっています。設定したい色が決まっていればパレットから色を選択しなくても直接青緑赤の色を指定してプロパティに色を設定することができます。
例えばローズ色を表す &H00CC99FF&
を BackColor
プロパティの値に直接入力してみます。
Enter
キーを押すと色が設定されます。
このように色を直接指定することもできます。なお赤緑青ではなく青緑赤の順番で色を指定する点に注意してください。
Windowsシステムカラーの一覧
Visual Basic Editor のプロパティウィンドウで選択可能な Windows システムカラーの一覧は次の通りです。
システムカラー名 | 値 | 定数 |
---|---|---|
スクロールバー | 0x80000000 | vbScrollBars |
デスクトップ | 0x80000001 | vbDesktop |
アクティブタイトルバー | 0x80000002 | vbActiveTitleBar |
非アクティブタイトルバー | 0x80000003 | vbInactiveTitleBar |
メニューバー | 0x80000004 | vbMenuBar |
ウィンドウの背景 | 0x80000005 | vbWindowBackground |
ウィンドウ枠 | 0x80000006 | vbWindowFrame |
メニューの文字 | 0x80000007 | vbMenuText |
ウィンドウの文字 | 0x80000008 | vbWindowText |
アクティブタイトルバーの文字 | 0x80000009 | vbTitleBarText |
アクティブウィンドウの境界 | 0x8000000A | vbActiveBorder |
非アクティブウィンドウの境界 | 0x8000000B | vbInactiveBorder |
アプリケーションの作業域 | 0x8000000C | vbApplicationWorkspace |
協調表示 | 0x8000000D | vbHighlight |
協調表示された文字列 | 0x8000000E | vbHighlightText |
ボタンの表面 | 0x8000000F | vbButtonFace |
ボタンの影 | 0x80000010 | vbButtonShadow |
淡色表示された文字列 | 0x80000011 | vbGrayText |
ボタンの文字 | 0x80000012 | vbButtonText |
非アクティブタイトルバーの文字 | 0x80000013 | vbInactiveCaptionText |
ボタンの強調表示 | 0x80000014 | vb3DHighlight |
ボタンの影(濃) | 0x80000015 | vb3DDKShadow |
ボタンの影(薄) | 0x80000016 | vb3DLight |
ツールヒントの文字 | 0x80000017 | vbInfoText |
ツールヒント | 0x80000018 | vbInfoBackground |
例えばメニューバーの値をプロパティウィンドウで設定する場合は、メニューバーの値である「0x80000004」を使って「&H80000004&」を設定します。
VBA を使ったプログラムの中で色を Windows システムカラーを使って指定する場合は次のように値または定数を使って指定します。値を使って指定する場合は最後の &
を省いた値を記述してください。
Private Sub UserForm_Initialize() Me.BackColor = &H80000004 Me.BackColor = vbMenuBar End Sub
VBA を使ったプログラムの中で色を赤青緑の各値を使って指定する場合は RGB
関数を使用すると便利です。
Private Sub UserForm_Initialize() Me.BackColor = RGB(0, 255, 0) End Sub
RGB
関数の使い方については「RGB関数:色を表す数値を取得する」を参照されてください。
-- --
Excel のユーザーフォームのプロパティで色を指定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。