VBA For文の使い方(処理を繰り返す)

目次

For文とは

For 変数 = 開始値 To 終了値 (Step 増減値)
    実行される処理
Next
  • 処理を繰り返す時に使用します。
  • 最初にforを書くのでfor文と呼ばれます。繰り返しはループとも呼ばれます。
  • 変数が開始値から終了値の範囲内の間、繰り返します。
  • 「Step 増減値」を省略した場合は、増減値=1になります。マイナス値の指定も可能です。
  • Excel、Accessとも同じです。

 

For文で処理を繰り返す

Sub test1()
    For a = 1 To 5
        Debug.Print a '1 2 3 4 5が出力される
    Next
End Sub

2行目は、1から5までの処理を繰り返します。
変数のaはカウンター変数またはループ変数と呼ばれます。

 

For文で配列の値を取得する

Sub test1()
    Dim color As Variant
    color = Array("赤", "黄", "青") '配列
    
    For a = 0 To UBound(color)
        Debug.Print color(a) '赤 黄 青が出力される
    Next
End Sub

3行目は、配列です。
5行目のUBoundは、配列の添字の最大値を返します。この場合は2を返します。
6行目は、変数と添字で配列の値を表示しています。

 

For文でStep(増分/減分)を使用する

Sub test1()
    For a = 1 To 10 Step 2
        Debug.Print a '1 3 5 7 9が出力される
    Next
    
    For b = 10 To 1 Step -2
        Debug.Print b '10 8 6 4 2が出力される
    Next
End Sub

2行目は、Stepの値が2です。増分が2なので4行目は1,3,5,7,9が表示されます。
6行目は、減分です。値が2ずつ減っていきます。

 

ループ処理を抜ける(Exit For)

For文でExit Forを使用してループ処理を抜けるサンプルです。

Sub test1()
    For a = 1 To 5
        If (a = 3) Then
            Exit For
        End If
        Debug.Print a '1 2が出力される
    Next
End Sub

4行目は、Exit Forを使用してループ処理から抜けています。

 

ループ処理で処理をスキップする(GoTo)

VBAには他言語にあるcontinueがありません。
そのためGoTo文を使って同じような動きをさせます。

Sub test1()
    For a = 1 To 5
        If (a = 3) Then
            GoTo CONTINUE
        End If
        Debug.Print a '1 2 4 5が出力される
CONTINUE:
    Next
End Sub

4行目は、GoTo文で8行目に移動します。
7行目は、ラベルです。

 

For Each文(ループで加算を使用しないfor文)

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

For Each文のサンプルです。

Sub test1()
    Dim arr As Variant
    arr = Array(1, 2, 3)  '配列
    
    For Each a In arr
        Debug.Print a '1 2 3が出力される
    Next
End Sub

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

関連の記事

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

△上に戻る