このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】Forループを途中で抜ける方法(Exit)

2024年4月8日

今回はForループを途中で抜ける方法を紹介します。

Forループを途中で抜けるにはExitステートメントを使用するのですが、DoループやSubを抜けるときにも同じくExitステートメントを使うので併せてご覧ください。

抜ける対象ステートメント
ForExit For
DoExit Do
SubExit Sub
Exitステートメント一覧表

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

Forループを途中で抜ける方法(Exit For)

Sub Sample1()
    
    Dim i As Long
    For i = 1 To 100
        
        '3の倍数だったらループを抜ける
        If i Mod 3 = 0 Then
            Exit For 'Exitステートメント
        End If
        
        Debug.Print i
    Next
End Sub

このコードはiが3の倍数であればループを抜けるようになっています。

「If i Mod 3 = 0 Then」この部分でiが3で割り切れるかを確認して、Exit Forでループを抜けています。

気になる方はステップ実行して、処理の流れを確認してみてください。

このようにIf文とExit Forを組み合わせることでループを抜けます。

Doループを途中で抜ける方法(Exit Do)

Sub Sample2()
    
    Dim i As Long
    i = 1
    Do
        '3の倍数だったらループを抜ける
        If i Mod 3 = 0 Then
            Exit Do 'Exitステートメント
        End If
        
        Debug.Print i
        i = i + 1
    Loop
End Sub

このコードは先ほどのForループの処理をDoループに書き換えたものです。

こちらも「If i Mod 3 = 0 Then」この部分でiが3で割り切れるかを確認して、Exit Doでループを抜けています。

Doループの使い方については↓の記事をご覧ください。

Subプロシージャを途中で抜ける方法(Exit Sub)

ForループやDoループと同じようにSubプロシージャも途中で抜けることができます。

Exit Subを行うと、実行中のSubプロシージャが途中終了します。

Sub Sample3()
    
    If MsgBox("マクロを実行しますか?", vbYesNo) = vbNo Then
        Exit Sub
    End If
End Sub

このコードは、最初にマクロを実行するか確認するサンプルとなっています。

メッセージボックスでマクロを実行するか確認し、「いいえ」であればSubプロシージャを終了しています。

関連記事

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい