サイトについて      連絡先   検索

VBA For 文

はじめに

Excel VBA の For 文を使用してループする方法を紹介します。

For 文には For Next と For Each の二種類のループの仕方があります。

For Next

For Next はインデックスを使用してループします。

インデックス用の変数はあらかじめ宣言しておきます。

Dim i As Integer ' インデックス用の変数

For i = 1 To 5
   ' i が 1 から 5 まで変化します。
   Debug.Print (i)
Next

For Next は配列のループによく使われます。

Dim list(5) As Integer
Dim i As Integer ' インデックス用の変数

For i = 0 To UBound(list) ' UBound は 5 を返します。
   ' list 配列の要素を 0 ~ 5 までループする
   Debug.Print (list(i))
Next

For Each

For Each はコレクションの全てをループします。

コレクションの要素を受け取る変数は Variant 型か Object 型の必要があります。コレクションが返す型がわかっているときは、その型を指定することをおすすめします。

Dim r As Range ' コレクションの要素を受け取る変数

For Each r In Range("A1", "A3")
    ' r がセル A1 ~ A3 まで変化します。
    Debug.Print (r.Value)
Next

For を抜ける

For をループ中に抜けたくなったら Exit For を使用します。

Dim i As Integer
For i = 1 To 5
   ' i が 3 になったら For を抜けます。
   If i = 3 Then
       Exit For
   End If

   Debug.Print (i)
Next

次の For へ

ループを一回飛ばして次のループへ移る Continue は VBA には存在しません。

GoTo 文を使用して同じようなことができます。

Dim i As Integer

For i = 0 To 5
    ' i が 3 のときは Continue: 行へ処理を飛ばします。
    If i = 3 Then
        GoTo Continue
    End If
    
    ' i が 3 のときはここは通りません。
    Debug.Print (i)
    
Continue:
Next

関連ページ