スポンサーリンク

Excel-VBA条件によりコマンドボタンの色を変更する

Excel-VBA
スポンサーリンク

文字色指定ForeColor=RGBとIfの組み合わせ

ユーザーフォームに配置しているコマンドボタン(CommandButton)の色を初期設定は黒色なのですが、変更したいことありませんか

常時赤色にするならば、コマンドボタンのプロパティ内「ForeColor」➡「パレット」で変更することができますが、条件に合えば「赤色」に変更してそうでなければ「黒色」のままってできないものか

なぜそう思ったかというと、和暦西暦変換対応カレンダーを作った時に、当たり前なのですがカレンダーの平日は黒色、日曜日と祝日は赤色、土曜日は青色っていうのが一般的ですよね。

https://tripbowl.net/vba-calendar/

波乗りアヒル
波乗りアヒル

Excel-VBAで色の指定はよく見るけど条件付きって見つからない

Ifステートメントと組み合わせて!

波乗りアヒル
波乗りアヒル

もし祝日だったら赤色、そうでなかったら色変更なしって事だね!

ここでは、「和暦西暦対応カレンダー」を作った時に実際に使っているExcel-VBAコード参考例に書いていきます。

まずは基本となるコマンドボタンの色をプロパティからではなくExcel-VBAコードで書くとこうなります。

文字色変更するコマンドボタンが1つの時

UserForm1.CommandButton1.ForeColor = RGB(255, 0, 0)

これは、ユーザーフォーム1のコマンドボタン1の色を赤色にするというExcel-VBAコードです。

それでは次にコマンドボタンの色は初期設定の黒色ですが、条件を付けてセルの値によりコマンドボタンの色を赤色にしてみましょう。

例えば、セルの値が”0″だったら、赤色にするというVBAコードを書いてみましょう。

If Range(“A1”).Value = 0 Then
UserForm1.CommandButton1.ForeColor = RGB(255, 0, 0)
End If
  1. もしセルA1の値が”0″だったら
  2. ユーザーフォーム1のコマンドボタンの文字色をRGBで指定した「赤色」にする
  3. Ifステートメント終了

となっています。

これで、セルA1の値が0の時はコマンドボタンの文字色が赤色になり、0以外は色変更されないという事です。

文字色変更するコマンドボタンが複数の時

1個1個設定は面倒なので繰り返し処理のFor~Nextを組み合わせれば簡単です。

For i = 1 To 37
With UserForm1.Controls(“CommandButton” & i)
.ForeColor = RGB(255, 0, 0)
End With
Next i
  1. 繰り返し処理の変数「i」を宣言し変数は1~37
  2. ユーザーフォーム1のコマンドボタン「i」の色をRGBの赤色にする
  3. withステートメント終了
  4. 繰り返し処理をする

ColorIndex色見本

エクセルで設定できる色はRGBを使えば、ほぼ無限にできますが、基本的な色だけならばColorIndexの番号指定で簡単にできます。

COLORINDEX色見本

Excel-VBAもくじへ

コメント