2/19/2023

Excel。VBA。条件に合致したデータが含まれる行全体を塗りつぶしたい【whole line】

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日 公開