ユーザーフォームやコントロールのプロパティで色を設定する方法

ユーザーフォームや設置したコントロールの背景色や文字色などでプロパティに対して色を指定することができます。色の指定方法として Windows のシステムカラーに対応した定数や値を指定する方法と、青緑赤の各値を指定して色を指定する方法が用意されています。ここでは Excel のユーザーフォームやコントロールのプロパティで色を設定する方法について解説します。

(Last modified: )

プロパティでの色の指定方法

例えばユーザーフォームのプロパティの中で色に関する値が設定されているものとして BackColor BorderColor ForeColor があります。

プロパティでの色の指定方法(1)

各プロパティの値は次のように設定されています。

BackColor    &H8000000F&
BorderColor  &H80000006&
ForeColor    &H80000012&

これらはすべて Windows のシステムカラーを表す数値で色が指定されています。例えば BackColor プロパティをクリックし、表示された値にあるドロップダウンメニューをクリックしてください。

プロパティでの色の指定方法(2)

すると BackColor プロパティに設定されている「&H8000000F&」という色は、システムカラーの「ボタンの表面」に設定されている色ということが確認できます。

プロパティでの色の指定方法(3)

またこの画面で「パレット」をクリックすると、システムカラーではなく色の一覧の中から色を選択することができます。表示された色の中から「赤色」をクリックしてみます。

プロパティでの色の指定方法(4)

プロパティでの色の指定方法(5)

すると BackColor プロパティの値は次のように設定されました。

BackColor    &H000000FF&

この値は色を青緑赤の各値を組み合わせて指定したものとなっています。どちらの場合も「&H」で始まり「&」で終わりその間に 16 進数の数値を記述して色を指定します。

色の値のルール

このように色に関するプロパティを指定する場合はシステムカラーを表す値と青緑赤の各値を組み合わせた値の両方が設定される可能性がありますが、値の記述の仕方は次のようなルールとなっています。

プロパティでの色の指定方法(6)

色の値が「&H」のあとに「80」と続いている場合は Windows のシステムカラーを使った色の値が指定されています。各プロパティにデフォルトで設定されていた値はすべて「&H80」で始まっているので Windows のシステムカラーです。そしてそのあとに続く数値がシステムカラーの値です。

BackColor    &H8000000F&
BorderColor  &H80000006&
ForeColor    &H80000012&

色の値が「&H」のあとに「00」と続いている場合は青緑赤の各値を 16 進数の 00 から FF で記述したものです。先ほどパレットで赤色を指定した場合に設定された値は「&H00」で始まっているので青緑赤の各値を指定した作成した色です。

BackColor    &H0000000FF&

この場合は青が「00」、緑が「00」、赤が「FF」となっています。設定したい色が決まっていればパレットから色を選択しなくても直接青緑赤の色を指定してプロパティに色を設定することができます。

例えばローズ色を表す &H00CC99FF&BackColor プロパティの値に直接入力してみます。

プロパティでの色の指定方法(7)

Enter キーを押すと色が設定されます。

プロパティでの色の指定方法(8)

このように色を直接指定することもできます。なお赤緑青ではなく青緑赤の順番で色を指定する点に注意してください。

Windowsシステムカラーの一覧

Visual Basic Editor のプロパティウィンドウで選択可能な Windows システムカラーの一覧は次の通りです。

システムカラー名定数
スクロールバー0x80000000vbScrollBars
デスクトップ0x80000001vbDesktop
アクティブタイトルバー0x80000002vbActiveTitleBar
非アクティブタイトルバー0x80000003vbInactiveTitleBar
メニューバー0x80000004vbMenuBar
ウィンドウの背景0x80000005vbWindowBackground
ウィンドウ枠0x80000006vbWindowFrame
メニューの文字0x80000007vbMenuText
ウィンドウの文字0x80000008vbWindowText
アクティブタイトルバーの文字0x80000009vbTitleBarText
アクティブウィンドウの境界0x8000000AvbActiveBorder
非アクティブウィンドウの境界0x8000000BvbInactiveBorder
アプリケーションの作業域0x8000000CvbApplicationWorkspace
協調表示0x8000000DvbHighlight
協調表示された文字列0x8000000EvbHighlightText
ボタンの表面0x8000000FvbButtonFace
ボタンの影0x80000010vbButtonShadow
淡色表示された文字列0x80000011vbGrayText
ボタンの文字0x80000012vbButtonText
非アクティブタイトルバーの文字0x80000013vbInactiveCaptionText
ボタンの強調表示0x80000014vb3DHighlight
ボタンの影(濃)0x80000015vb3DDKShadow
ボタンの影(薄)0x80000016vb3DLight
ツールヒントの文字0x80000017vbInfoText
ツールヒント0x80000018vbInfoBackground

例えばメニューバーの値をプロパティウィンドウで設定する場合は、メニューバーの値である「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 )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。