For Each で1行ずつ処理する

先日は、テーブルで特定の列を処理する方法を幾つか紹介した。
infoment.hatenablog.com

今日は、For Each で1行ずつ処理する場合についてのご紹介。
f:id:Infoment:20190822062740p:plain

例えば、こんな表でのお話。
f:id:Infoment:20190822062901p:plain

A列がリンゴの行だけ、赤で塗り潰したいとする。昔は、こんな風に書いていた。

Sub Test①()
    Dim i As Long
    Dim LastRow As Long
        LastRow = Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To LastRow
            If Cells(i, 1) = "りんご" Then
                Range(Cells(i, 1), Cells(i, 1).End(xlToRight)).Interior.Color = vbRed
            End If
        Next
End Sub

f:id:Infoment:20190822063406p:plain

求める結果が得られる以上、これでも問題は無いと考える。
一方で、指定範囲が「複数の行が積み重なったもの」と捉えれば、このような表記も可能となる。

Sub Test②()
    Dim list_row As Range
        For Each list_row In Range("A1").CurrentRegion.Rows
            If list_row.Cells(1) = "りんご" Then
                list_row.Interior.Color = vbRed
            End If
        Next
End Sub

なお、テーブルの場合はまた違った表記となる。
どちらを用いるかは、時と場合とお好みで。
※「そんなの条件付き書式でやればいいじゃないか」という突っ込みは、今回無しでお願いします。

参考まで。