エクセルで成績表や日付があると文字の色やセルの背景色を変えたいと思いませんか?
例えば、テストの成績表で80点以上ならば赤色文字にまたはセルの背景色をピンク色とかに変えられたら見栄えが良くなりますよね。
ここでは、ユーザーフォームに配置したコマンドボタンを押すことにより、80点以上の人を探して条件に一致したらセルの文字色や背景色を変えられるようにしましょう。
指定したセルの文字・背景色を変更方法
まずは基本的な文字色や背景色の変更方法から順におさらいしておきましょう。
ここではユーザーフォームに配置したコマンドボタンにVBAコードを書き込みます。
指定したセルの文字色を変更する
例えば、セルA1の文字色を初期設定の黒色を赤色に指定しましょう。
赤色のColorIndex番号は3です。
ついでに文字色変更するには、Font.ColorIndexの他にRGBで指定することもできます。
どにらも文字色を赤色に変更できます。
ちなみにColorIndexには色見本というのがあり、56種類の色見本です!
決まった範囲のセルの文字色を変える
色を変更したいセルは常に1か所ではなくある一定の範囲で指定したい時がありますので、ここではセルの範囲(A1~C3)を全て赤色に変えてみましょう。
もちろんRGBも同じようにできます。
指定したセルの背景色を変更する
今度は背景色ですが、文字色とほぼ同じで文字を表すFontを背景を表すInteriorに変えるだけですよ。
では続けてRGBにして、範囲をA1:C3で色を青色にしましょう。
もちろんなのですが、文字色と背景色を続けて書けば同時に色を変えられるので、このように文字色は赤色で背景色は青色もできますよ。
基本的な文字色・背景色は大丈夫ですね。
次は実用的する為にテストの点数が80点以上ならば赤色に文字色を替えてみましょう。
1つの条件により文字色を変える
テストの点数が80以上の時に文字色を変えるという事は、もし80点以上だったらと言い換えられますので、If~Thenを使います。
「>=80」で80点以上を表し、条件に合えば、赤色文字にしてそうではない場合(80点未満)は何もしない(色を変えない)という事ですね。
ここまでやったら、80点以上の条件に付けくわえて30点以下は背景色黄色を追加してみませんか?
2つの条件によりそれぞれセルの色を変える
追加した部分、そうではなく30点以下ならばは、ElseIfから始まる部分です。
これで特定のセルの値が80点以上の場合と30点以下の場合で文字色や背景色を変えることができるようになりました。
このように、「もし~だったら、そうではなくもし~だったら」という、If~Thenステートメントを使う事により、可能となるので、ぜひマスターしたいVBAコードですよね。
繰り返し処理を加えて実用的に色変更
ここまでは1か所のセルだけを調べて値により、文字色や背景色を変えましたが、テストの点数ならば受験者が1人ってことないですよね。複数名いるので全員の点数を調べて条件に合致した人だけ色を変える方が実用的です。
もちろん先ほどの「もし80点ならば、そうでなく30点以下ならば」でのVBAコードを全員分コピーして書き続ければできますが、時間の無駄な作業になりますので、繰り返し処理のFor~Nextを使いましょう。
複数のセルの値を条件によりまとめて色変更
ここではC3~C12に点数が入っていて、それぞれ80点以上ならば背景色赤色、30点以下ならば黄色としましょう。
繰り返し処理の時はセルを示すRangeが使えないので「Cells」を使い(i,3)で、変数iが行番号3~12に変化してセルC3~C12まで順番に点数を見て条件に合えば色を変えてくれるようになります。
判定評価が2つでしたが、通知表みたいに5段階評価したいとなると、If~Thenでもできないことは無いですが、VBAコードがすごく長くなってしまうので、スッキリさせる条件分岐するSelect Caseステートメントを使いましょう。
これでまとめて一括でセルの色を変える事ができるようになりましたね。
このような使い方が実際のところ一番多いです。
さらに、応用でユーザーフォームのラベルも同じようにまとめて色変更できるようになるとデータリストアップするのに便利ですよ。
条件によって文字色や背景色ができるようになったら、文字サイズや行の高さ・列の幅も変更できるようになると見栄えが良くなりますよ。
セルの操作関連の参考VBA集
みんなが疑問に思ってたりで良く調べられているセル関連のVBAコードで、今週よく見られている5つのページなので、参考になれば幸いです。
記念日などに文字に〇丸印や♡をつける
文字色や背景色を変えたついでに、〇をつけたりしてもっと目立たせたくないですか?
ちょっとひと工夫すると、約130種類のデザインから選んでオリジナリティーあふれるカレンダーを作ってみましょう。