Excel。VBA。条件に合致したデータが含まれる行全体を塗りつぶしたい
<Excel VBA:Interior>
条件に合致するデータがある行全体を塗りつぶすには、条件付き書式の新しいルールで、数式をつかった条件を設定することで、対応することができます。
ただ、データを読みこんだ後に、毎回同じ条件付き書式を設定するのも面倒です。
そこで、Excel VBAでプログラム文をつくると、作業効率が改善できるわけです。
Excel VBAで条件付き書式を設定しなくても、範囲選択を工夫することで、それほど、難しくないプログラム文で対応することができます。
今回は、E列の合計が210以上だったら、行全体を塗りつぶすことにします。
Sub 行塗りつぶし210以上()
Dim i As Integer
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
If Cells(i, "e") >= 210 Then
With Range(Cells(i, "a"), Cells(i, "e")).Interior
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.8
End With
End If
Next
End Sub
このプログラム文を実行すれば、手早くE列の合計が210以上のデータの場合、その行全体を塗りつぶすことができます。
プログラム文を説明していきます。
最初は、変数宣言です。
Dim i As Integer
Dim lastrow As Long
For To Next文で繰り返し処理を行うので、繰り返す回数をlastrowに代入させます。
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
繰り返し処理の中でIf文をつかって、E列のデータが210以上か判定します。
For i = 2 To lastrow
If Cells(i, "e") >= 210 Then
With Range(Cells(i, "a"), Cells(i, "e")).Interior
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.8
End With
End If
Next
210以上の時には、塗りつぶしの処理をします。
With文をつかっているのは、同じことを繰り返し入力するのは面倒なので、省略することもありますが、可読性を高めるために使用しています。
「Range(Cells(i, "a"), Cells(i, "e"))」という範囲選択が行全体に対応しています。
この範囲選択のやり方を知らないと、行と列で繰り返し処理をすることになります。
「.Interior」が塗りつぶし処理です。
何色にするのかが、
「.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.8」
です。
これらのプロパティは、テーマの色のパレットを指し示す指示をしています。
詳しくは、このBLOG内に記載しておりますので、ご参考まで。
「Excel。テーマの色の設定値ってこんな風になっているんですね。」
https://infoyandssblog.blogspot.com/search?q=vba+%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%89%B2
2018年1月2日 公開