こんにちは、Ryoです。
VBAを扱う上で何かと使用することが多いユーザーフォームですが、用途によっては背景色を変更して視覚的にわかりやすくしたいこともあるかと思います。その場合はBackColorプロパティを利用しRGB関数を使用することで設定できますので、今回はその方法について書いていきます。
1.サンプル概要
以下画像のユーザーフォームをサンプルとして作っています。各ボタンにはそれぞれ「Red」「Green」「Blue」「Black」を割当ていて、クリックするとフォーム背景色が変わります。
「Red」
「Green」
「Blue」
「Black」
またフォーム内にある「Reset」ボタンを押すことで初期の色に戻ります。
2.UserForm構成
本サンプルのUserForm構成は以下の通りです。
各ボタンの文字色やフォントなどはプロパティウィンドウから設定していますが、ここはお好みで良いと思います。
3.サンプルコード
UserForm1に作成したCommandButton1~4、及び「Reset」のCommandButton5のコードは以下の通りで、それぞれ色指定を変えているだけです。
Private Sub CommandButton1_Click() '「Red」ボタン⇒赤色 Me.BackColor = RGB(255, 0, 0) End Sub Private Sub CommandButton2_Click() '「Green」ボタン⇒緑色 Me.BackColor = RGB(0, 255, 0) End Sub Private Sub CommandButton3_Click() '「Blue」ボタン⇒青色 Me.BackColor = RGB(0, 0, 255) End Sub Private Sub CommandButton4_Click() '「Black」ボタン⇒黒色 Me.BackColor = RGB(0, 0, 0) End Sub Private Sub CommandButton5_Click() '「Reset」ボタン⇒初期の色にリセットする Me.BackColor = &H8000000F 'Me.BackColor = vbButtonFaceの指定でも同様 End Sub
先ずサンプルコード内で使用している「Me」は、コードが書かれているユーザーフォーム自体を表しています。そこにBackColorプロパティとRGB関数を使うことで背景色を指定できるということです。
オブジェクト.BackColor = RGB(red,green,blue)
また「Reset」ボタンは初期の背景色に戻しているのですが、記述している通り「カラー定数」を使うことも可能です。ここでカラー定数としているのは、初期色に戻す上で「UserForm1」プロパティ上の設定値をそのまま使用している為ですね。
ちなみにサンプルコード内にコメントでも書いてありますが、
Me.BackColor = vbButtonFace という指定でも初期背景色になります。
4.まとめ
人が扱う上で色分けされていると直感的に判別しやすいので、知っておくと役に立つ場面も多いのではないかと思います。
私の場合はフォーム上で扱う製品品種などにより背景色を変えたりしていますが、誤操作を防止するという点では効果があるように思いますので、何か使用機会などがあれば活用をご検討くださいませ!
以上、ユーザーフォーム背景色を変更する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo