#650 コマンドボタンの色を動的に変える際の設定項目 フォーム、VBA

フォームで使う「コマンドボタン」コントロールの「色」に関しては、いつかの設定項目(プロパティ)があります。主には「フォントの色(前景色)」「背景の色」「境界線の色」の3つです。
これらはフォームを開いた直後など、ボタンに対して何もしていないときの色を設定するものです。

一方、ボタンに対して何らかの操作をした際の、コマンドボタン特有の色として、次のようなものがあります。
  1. ポイント時の前景色
  2. クリック時の前景色
  3. ポイント時の色
  4. クリック時の色
表現として分かりづらいところがありますが、上記の4つは次のような色を指定するものです。
  1. マウスのカーソルがボタン上に移動した際の”フォントの色”
  2. マウスの左ボタンが押し下げられたときの”フォントの色”
  3. マウスのカーソルがボタン上に移動した際の”背景の色”
  4. マウスの左ボタンが押し下げられたときの”背景の色”

よって、プロパティシートを見ると分かると思いますが、コマンドボタンの色については合計で7つのプロパティがあることになります。
それらの設定をVBAで動的に変えたいようなときのために、VBAの英語表記でのプロパティ名を整理すると次のようになります。
フォントの色 通常時 ForeColor
カーソル移動時 HoverForeColor
ボタン押し下げ時 PressedForeColor
背景の色 通常時 BackColor
カーソル移動時 HoverColor
ボタン押し下げ時 PressedColor
境界線の色 BorderColor


その実際のプログラム例として次のようなフォームを作ってみました。


[色を変えるボタン1]と[色を変えるボタン2]のクリック時イベントプロシージャで上記の各プロパティ値を設定変更します。設定変更の対象となるコマンドボタンは[色を変えられる側のボタン]です。それぞれコントロールの名前は「コマンド1」、「コマンド2」、「コマンド0」となっています。

イベントプロシージャの記述:

Private Sub コマンド1_Click()
'[色を変えるボタン1]ボタンクリック時

  Dim lngGradient As Long

  With Me!コマンド0
    lngGradient = .Gradient

    .ForeColor = RGB(237, 28, 36)
    .HoverForeColor = RGB(192, 80, 77)
    .PressedForeColor = RGB(255, 255, 255)
    .BackColor = RGB(119, 192, 212)
    .HoverColor = RGB(252, 230, 212)
    .PressedColor = RGB(181, 203, 136)
    .BorderColor = RGB(255, 194, 14)

    .Gradient = lngGradient

  End With

End Sub

Private Sub コマンド2_Click()
'[色を変えるボタン2]ボタンクリック時

  Dim lngGradient As Long

  With Me!コマンド0
    lngGradient = .Gradient

    .ForeColor = RGB(0, 0, 0)
    .HoverForeColor = RGB(255, 255, 255)
    .PressedForeColor = RGB(236, 236, 236)
    .BackColor = RGB(167, 218, 78)
    .HoverColor = RGB(34, 177, 76)
    .PressedColor = RGB(117, 140, 72)
    .BorderColor = RGB(237, 28, 36)

    .Gradient = lngGradient

  End With

End Sub


【注意点】
  • フォームに設定された「テーマ」や「配色」などの条件によっても異なりますが、フォームにコマンドボタンを新規に配置した際、その「図形の塗りつぶし(=背景色)」として『グラデーション』が設定されていることがあります。
  • その場合、背景色関係のプロパティを変更するとその設定がリセットされ、フラットな感じのデザインになってしまいます。
  • それを回避するため、上記のプログラムでは、その変更前に「Gradient」プロパティの値を変数「lngGradient」に保存し、一連の変更が終わった後にその変数値をGradientプロパティに代入することによって、初期の設定を復元するようにしています。


実行結果:

■デフォルトの状態
通常時 カーソル移動時 ボタン押し下げ時

■[色を変えるボタン1]クリック後
通常時 カーソル移動時 ボタン押し下げ時

■[色を変えるボタン2]クリック後
通常時 カーソル移動時 ボタン押し下げ時

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved