【用語集に記載の内容について】

用語集に記載されているメソッドや関数の引数は、VBAエキスパート試験の試験範囲に基づいており、すべての引数を網羅しておりません。 また、書式は公式テキストの記載に準じています。
試験範囲外の引数や詳細については、ヘルプ機能やオブジェクトブラウザーをご参照ください。

【コードをコピーして実行する場合の注意】

文字コードの関係上、半角の「¥」は「/」で表示されるため、当サイトでは全角の「¥」で記載しています。当サイトのコードをコピーして実行する場合は、全角の「¥」を半角の「¥」に変換してください。

Exit Forステートメント

名称Exit Forステートメント
説明
For…NextステートメントまたはFor Each…Nextステートメントの繰り返しを途中で終了させる命令です。

Exit Forステートメントを使用することで、条件を満たした時点で繰り返しを終了し、以降の処理をスキップすることで、無駄な繰り返しを避け、処理を効率化できます。
コード例①
Sub Macro1()
    Dim i As Integer
    
    '1から5まで繰り返し
    For i = 1 To 5
        ' 変数iの値が3になったら繰り返しを終了
        If i = 3 Then
            MsgBox "i = " & i
            Exit For
        End If
    Next i
End Sub

For…Nextステートメントは、カウンタ変数iに1から5までの値を順に格納し、処理を5回繰り返します。

しかし、Ifステートメント内に「Exit For」が記述されているので、変数iの値が3になったときに、「i = 3」のメッセージボックスを表示し、「Exit For」で、For…Nextステートメントの繰り返しを途中で終了します。

For…Nextステートメントは以下のように処理されます。
i = 1→「If 1 = 3 Then」でFalse
i = 2→「If 2 = 3 Then」でFalse
i = 3→「If 3 = 3 Then」でTrue →
 「i = 3」のメッセージボックスを表示 →
 「Exit For」で繰り返し終了"
コード例②
Sub Macro2()
    Dim ws As Worksheet
    
    For Each ws In ActiveWorkbook.Worksheets
        'Sheet1が見つかったら、繰り返しを終了
        If ws.Name = "Sheet1" Then
            MsgBox "ブック内にSheet1が存在します"
            Exit For
        End If
    Next ws
End Sub

For Each…Nextステートメントは、アクティブブックのすべてのワークシートをひとつずつ取り出し、繰り返しを実行します。

しかし、Ifステートメント内に「Exit For」が記述されているので、「Sheet1」という名前のシートが見つかった場合に、「ブック内にSheet1が存在します」のメッセージボックスを表示し、「Exit For」でFor Each...Nextステートメントの繰り返しを途中で終了します。

アクティブブック内にワークシート「Sheet1」「Sheet2」が存在する場合、For Each...Nextステートメントは以下のように処理されます。
ws = ワークシート「Sheet1」
 → 「ブック内にSheet1が存在します」のメッセージボックスを表示
 → 「Exit For」で繰り返し終了
カテゴリスタンダード