VBAで条件によりセルの色をまとめて変える

エクセルVBAセルの操作セルの操作
セルの文字色・背景色まとめて変更

エクセルで成績表や日付があると文字の色やセルの背景色を変えたいと思いませんか

例えば、テストの成績表で80点以上ならば赤色文字にまたはセルの背景色をピンク色とかに変えられたら見栄えが良くなりますよね。

ここでは、ユーザーフォームに配置したコマンドボタンを押すことにより、80点以上の人を探して条件に一致したらセルの文字色や背景色を変えられるようにしましょう。

スポンサーリンク

指定したセルの文字・背景色を変更方法

まずは基本的な文字色や背景色の変更方法から順におさらいしておきましょう。

指定したセルの文字色を変更する

例えば、セルA1の文字色を初期設定の黒色を赤色に指定しましょう。

赤色のColorIndex番号は3です。

セルA1の文字色を赤色に指定するVBAコード

Private Sub CommandButton1_Click()
Range(“A1”).Font.ColorIndex = 3
End Sub

文字色変更には、Font.ColorIndexの他にRGBで指定することもできます。

RGBで指定して文字色変更

Private Sub CommandButton1_Click()
Range(“A1”).Font.Color = RGB(255, 0, 0)
End Sub

どにらも文字色を赤色に変更できます。

<span class="fz-12px">とりっぷぼうる</span>
とりっぷぼうる

ちなみに色見本というのがあり、56種類の色見本です

決まった範囲のセルの文字色を変える

次は決まった範囲(A1~C3)の範囲のセル全てを赤色に変えるのも簡単ですね。

指定範囲のセルの文字色変更

Private Sub CommandButton1_Click()
Range(“A1:C3”).Font.ColorIndex = 3
End Sub

もちろんRGBも同じようにできます。

指定したセルの背景色を変更する

今度は背景色ですが、文字色とほぼ同じで文字を表すFontを背景を表すInteriorに変えるだけですよ。

セルA1の背景色を変える

Private Sub CommandButton1_Click()
Range(“A1”).Interior.ColorIndex = 3
End Sub

では続けてRGBにして、範囲をA1:C3で色を青色にしましょう。

背景色を青色にRGBで指定

Private Sub CommandButton1_Click()
Range(“A1:C3”).Interior.Color = RGB(0, 0, 255)
End Sub

もちろんなのですが、文字色と背景色を続けて書けば同時に色を変えられるので、このように文字色は赤色で背景色は青色もできますよ。

文字・背景色同時に変更

Private Sub CommandButton1_Click()
Range(“C3”).Font.ColorIndex = 3
Range(“C3”).Interior.ColorIndex = 5
End Sub

基本的な文字色・背景色は大丈夫ですね。

<span class="fz-12px">とりっぷぼうる</span>
とりっぷぼうる

次は実用的する為にテストの点数が80点以上ならば赤色に文字色を替えてみましょう。

1つの条件により文字色を変える

テストの点数が80以上の時に文字色を変えるという事は、もし80点以上だったらと言い換えられますので、If~Thenを使います。

C3の値が80点以上の時赤色文字

Private Sub CommandButton1_Click()
If Range(“C3”).Value >= 80 Then
Range(“C3”).Font.ColorIndex = 3
End If
End Sub

「>=80」で80点以上を表し、条件に合えば、赤色文字にしてそうではない場合(80点未満)は何もしない(色を変えない)という事ですね。

ここまでやったら、80点以上の条件に付けくわえて30点以下は背景色黄色を追加してみませんか?

2つの条件によりそれぞれセルの色を変える

もし80点ならば、そうでなく30点以下ならば

Private Sub CommandButton1_Click()
If Range(“C3”).Value >= 80 Then
Range(“C3”).Font.ColorIndex = 3
ElseIf Range(“C3”).Value <= 30 Then
Range(“C3”).Interior.ColorIndex = 6
End If
End Sub

追加した部分、そうではなく30点以下ならばは、ElseIfから始まる部分です。

これで特定のセルの値が80点以上の場合と30点以下の場合で文字色や背景色を変えることができるようになりました。

スポンサーリンク

繰り返し処理を加えて実用的に色変更

ここまでは1か所のセルだけを調べて値により、文字色や背景色を変えましたが、テストの点数ならば受験者が1人ってことないですよね。複数名いるので全員の点数を調べて条件に合致した人だけ色を変える方が実用的です。

もちろん先ほどの「もし80点ならば、そうでなく30点以下ならば」でのVBAコードを全員分コピーして書き続ければできますが、時間の無駄な作業になりますので、繰り返し処理のFor~Nextを使いましょう。

複数のセルの値を条件によりまとめて色変更

ここではC3~C12に点数が入っていて、それぞれ80点以上ならば背景色赤色、30点以下ならば黄色としましょう。

For~Nextで繰り返し

Private Sub CommandButton1_Click()
For i = 3 To 12
If Cells(i, 3).Value >= 80 Then
Cells(i, 3).Interior.ColorIndex = 3
ElseIf Cells(i, 3).Value <= 30 Then
Cells(i, 3).Interior.ColorIndex = 6
End If
Next i
End Sub

繰り返し処理の時はセルを示すRangeが使えないので「Cells」を使い(i,3)で、変数iが行番号3~12に変化してセルC3~C12まで順番に点数を見て条件に合えば色を変えてくれるようになります。

判定評価が2つでしたが、通知表みたいに5段階評価したいとなると、If~Thenでもできないことは無いですが、VBAコードがすごく長くなってしまうので、スッキリさせる条件分岐するSelect Caseステートメントを使いましょう。

<span class="fz-12px">とりっぷぼうる</span>
とりっぷぼうる

これでまとめて一括でセルの色を変える事ができるようになりましたね。

このような使い方が実際のところ一番多いです。

 

さらに、応用でユーザーフォームのラベルも同じようにまとめて色変更できるようになるとデータリストアップするのに便利ですよ。

タイトルとURLをコピーしました