セルの文字色を条件によって赤や黒に自動的に変える方法をボタン登録
テスト成績表で3科目すべて合格点以上だったら、成績一覧表の点数を目立つようにするのに、目で見て探して色を変更するのが面倒だと思って何かいい方法がないか?と探していますよね。
西船ボウルのリーグ成績表でも、3ゲーム全て自分自身のアベレージ(AVE)を上回るスコアーを出したら、エクセルVBAを使って自動的にセルの文字や背景が目立つように赤色で表示するようにしています。
- 条件分岐「Ifステートメント」
- 繰り返し処理「For~Next」
- 文字色「Font.Color」
- 背景色「Interior.Color」
文字色や背景色を条件で自動変更
図のようなボウリング成績表があり、前回のAVEを上回ったゲームの回数を計算式により表示させ、3ゲーム全て上回った場合に目立つように「文字色」「背景色」を自動変更させるVBAコードを書いて、ボタン1に登録します。
色変更VBAコードと説明
ここでは、条件に合った場合(達成した場合)の文字色を「赤」、背景色を「水色」に、未達成の場合は「黒」にし、色指定は「RGB」を使います。
次のようにエクセルVBAコードを書くと、自動的に2行目から8行目まで順に、G列の値が「3」という条件に合致するセルを探して、見つけると文字色「赤」背景色「水色」に変更してくれます。
また、条件に合わないセルは元通りの文字色「黒」、背景色「なし」にします。
Sub 文字背景色変更()
For i = 2 To 8
If Cells(i, 7).Value = 3 Then
Cells(i, 7).Font.Color = RGB(255, 0, 0)
Cells(i, 7).Interior.Color = RGB(204, 255, 255)
Else
Cells(i, 7).Font.Color = RGB(0, 0, 0)
Cells(i, 7).Interior.ColorIndex = 0
End If
Next i
End Sub
では1行目から解説じゃ
- 「文字背景色変更」というタイトルでマクロ宣言
- 繰り返し処理の変数「i」を宣言し、変数は2~8とする
- もし、i行目の7列目の値が「3」だったら
- i行目の7列目の文字色を「赤色」にする
- i行目の7列目の背景色を「水色」にする
- 条件に合わなかったら(3ではない場合)
- i行目の7列目の文字色を「黒色」にする
- i行目の7列目の背景色をクリアする
- Ifステートメントを終了する
- 変数「i」を繰り返す
- マクロ記録終了
変数って書いてあると煙が出そうになりますが、1行ずつ小分けして見ていけばさほど難しく感じなくなると思います。
もちろん上記以外にも内容は同じでもVBAコードの書き方は他にもありますので、実際にボウリングリーグ成績表で使っているエクセルVBAコードを参考にしてくださいね。
VBA色見本
エクセルVBAで文字色や背景色は、基本の56色が「ColorIndex」として指定でき、先ほどのVBAコードでも8行目に「ColorIndex = 0」として色番号を指定しないので、背景色無しにしています。
西船ボウルでのリーグ成績表でよく使うのは、主に5つです。
- 「0」色無し…背景色を元に戻す為
- 「1」黒・・・文字色を元に戻す為
- 「3」赤・・・表彰対象で数字を目立たせる為
- 「5」青・・・赤色の対比で目立たせる数字
- 「20」水色・・目立たせる文字の背景色に使用
ColorIndexとRGBの色見本ですよ~
ColorIndex | RGB | ColorIndex | RGB |
1 | RGB(0,0,0) | 29 | RGB(128,0,128) |
2 | RGB(255,255,255) | 30 | RGB(128,0,0) |
3 | RGB(255,0,0) | 31 | RGB(0,128,128) |
4 | RGB(0,255,0) | 32 | RGB(0,0,255) |
5 | RGB(0,0,255) | 33 | RGB(0,204,255) |
6 | RGB(255,255,0) | 34 | RGB(204,255,255) |
7 | RGB(255,0,255) | 35 | RGB(204,255,204) |
8 | RGB(0,255,255) | 36 | RGB(255,255,153) |
9 | RGB(128,0,0) | 37 | RGB(153,204,255) |
10 | RGB(0,128,0) | 38 | RGB(255,153,204) |
11 | RGB(0,0,128) | 39 | RGB(204,153,255) |
12 | RGB(128,128,0) | 40 | RGB(255,204,153) |
13 | RGB(128,0,128) | 41 | RGB(51,102,255) |
14 | RGB(0,128,128) | 42 | RGB(51,204,204) |
15 | RGB(192,192,192) | 43 | RGB(153,204,0) |
16 | RGB(128,128,128) | 44 | RGB(255,204,0) |
17 | RGB(153,153,255) | 45 | RGB(255,153,0) |
18 | RGB(153,51,102) | 46 | RGB(255,102,0) |
19 | RGB(255,255,204) | 47 | RGB(102,102,153) |
20 | RGB(204,255,255) | 48 | RGB(150,150,150) |
21 | RGB(102,0,102) | 49 | RGB(0,51,102) |
22 | RGB(255,128,128) | 50 | RGB(51,153,102) |
23 | RGB(0,102,204) | 51 | RGB(0,51,0) |
24 | RGB(204,204,255) | 52 | RGB(51,51,0) |
25 | RGB(0,0,128) | 53 | RGB(153,51,0) |
26 | RGB(255,0,255) | 54 | RGB(153,51,102) |
27 | RGB(255,255,0) | 55 | RGB(51,51,153) |
28 | RGB(0,255,255) | 56 | RGB(51,51,51) |
成績表の人数や探す数字によりますが、1分ぐらいかかっていた作業が、たった1秒かからずに終わってしまうので、やらないなんて損ですよ。
目立つ色をマスターしたら、成績表といえば成績順やポイント順に並べ替える作業は毎週やる作業じゃ!
並べ替えも一瞬で終わらせるVBAもマスター必須じゃ!
ボウリング成績表で必須のVBAコード
エクセルのボタンの配置方法やリボンツールバーの「開発」設定がまだの場合、この機能使えないので設定から始めましょう~
西船ボウルで使用しているエクセルで作っているリーグ成績表(スタンディング)で、必ず使っているVBAコードです。
実際にはワークシート上にコマンドボタンを配置せず、専用の入力フォームも(ユーザーフォーム)作成してフォーム上にボタンなどを配置しています。
成績表作成でよく使う便利機能
エクセルファイル操作の便利機能