VBA For Each文のサンプル(Excel/Access)

VBAのFor Each文で、繰り返し処理を行うサンプルです。
For Each文自体はExcel、Accessとも同じですがセルの指定はExcelのみできます。

目次

説明 For Each文
サンプル セルに対して範囲で入力する
  ワークシートを指定しセルに対して範囲で入力する
  配列の値を取得する

For Each文

For  Each  変数  In  コレクションや配列
  繰り返される箇所
Next
  • 処理を繰り返したいときに使用します。
  • コレクションの数や配列の値の数分処理を繰り返します。
  • コレクションとはワークシートやセルの範囲などです。

セルに対して範囲で入力する

セルに対して範囲で入力するサンプルです。

Sub test1()
    Dim r1 As Range
    
    For Each r1 In Range("B2:C5")
        r1.Value = "1"
    Next
End Sub

4行目は、コレクションとしてセルの範囲を指定しています。
エクセルのシートのB2からC5まで処理が行われます。

上記のコードを実行した結果です。
B2からC5まで1がセットされます。

ワークシートを指定しセルに対して範囲で入力する

ワークシートを指定しセルに対して範囲で入力するサンプルです。

Sub test1()
    Dim w1 As Worksheet
    
    For Each w1 In Worksheets
        If w1.Name = "Sheet2" Then
            w1.Range("B2:C5").Value = "1"
        End If
    Next
End Sub

4行目は、コレクションとしてワークシートを指定しています。
ワークシートの数だけループ処理が行われます。
5行目は、ワークシート名がSheet2のときのみtrueになります。
6行目は、指定したセルの範囲に1をセットしています。

上記のコードを実行した結果です。
Sheet2のB2からC5まで1がセットされます。

配列の値を取得する

配列の値を取得するサンプルです。

Sub test1()
    Dim ar1(2) As Integer
    ar1(0) = 1
    ar1(1) = 2
    ar1(2) = 3
    
    For Each a In ar1
       Debug.Print a '1 2 3
    Next
End Sub

2~5行目は、配列をセットしています。
7行目は、配列の値の数分処理を繰り返します。

以下は、MicrosoftのVBAのFor Each文のリンクです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/for-eachnext-statement

関連の記事

VBA For文のサンプル(Excel/Access)
VBA Do Loop文のサンプル(Excel/Access)

△上に戻る