For Eachステートメントとは、配列やコレクションなどのグループの各要素に対して繰り返し処理を行う場合に使用します。For Nextのように、個別に呼び出ししないため、体感スピードの向上が期待できます。今日は、その基本的な使い方をみていきましょう。

 

For  Eachステートメント

 

構文
For Each 要素名 In グループ名
    処理
Next [要素名]

 

 特定文言のシート名が存在するかを判断する事例を見ながら、For NextとFor Eachの違いを確認しましょう。

 

Sub test()

 ’For Nextで、”SIZE”という文言を含むシートを探す


    Dim i As Long


    For i = 1 To Sheets.Count
        If Sheets(i).Name Like "*SIZE*" Then
            MsgBox "シート名に「SIZE」を含むシートが存在します。"
        End If
    Next i

 

End Sub

 

 

Sub test2()

 ’For Eachで、”SIZE”という文言を含むシートを探す

 

     Dim WS As Worksheet
     
     For Each WS In Sheets
        If WS.Name Like "*SIZE*" Then
           MsgBox "シート名に「SIZE」を含むシートが存在します。"
        End If
     Next
End Sub


For Eachのほうが、Indexのiを入れる必要がなく、もっと簡潔で、処理スピードも少し速くなります。

 

 

 

複数列データから抽出

 

 

 

Sub test3()
    ’ セルA4:E13のなか、「美」を含むセルの背景色を赤にする

    Dim R As Range
    
    For Each R In Range("A4:E13")
        If R.Value Like "*美*" Then
            R.Interior.ColorIndex = 3
        End If
    Next
End Sub

 

実行結果

 

 

For Next の場合、列ごとでループをかける必要がありますが、For Eachの場合、範囲を指定し、一括で処理してくれます。

 

 

― ― ― ― ― ― ― ― ― ― → Excel VBA基礎入門もくじ へ戻る

 

 

関連記事