【Excel VBA】任意のタイミングでFor文を抜ける方法【Exit For】

Excel
スポンサーリンク

今回は任意のタイミングでFor文を抜ける方法を紹介したいと思います。

VBAに関する記事を不定期で投稿していますので、併せてご覧ください!

スポンサーリンク

任意のタイミングでFor文を抜ける方法

For文を使用していて、

特定の値になったら途中で処理を抜けたい・・・

ってなることがあるかと思います。

そんな時はExit Forを使うと残りの処理回数にかかわらずFor文を抜けることができます

For i = 1 To 5
    Exit For
Next i

どんな挙動をするか分からないと思うので、実際にExit Forを使用しない場合とした場合とで見比べてみましょう。

先に使用しない場合です。

任意のタイミングでFor文を抜ける方法_1

Exit Forを使用していないので通常通り処理が行われ、iの値が6になった時に抜けています。

続いて使用した場合についてです。

任意のタイミングでFor文を抜ける方法_2

先程はi=6で抜けていましたが、i=1の段階でFor文を抜けているのが分かるかと思います

このようにExit Forを使用することで、任意のタイミングで強制的にFor文を抜けることができるようになります。

スポンサーリンク

Exit Forの使用例

次にExit Forの使用例について簡単に紹介します。

Exit ForはそのままFor文の中に書くよりは、IF文と組み合わせて特定の条件下で処理から抜ける、といった使い方をします。

For i = 1 To 5
    If 【条件式】 Then
        Exit For
    End If
Next i

セルの値に応じてExit Forを実行させる

初めにセルの値に応じてExit Forを実行させる方法です。

イメージとしては、For文の添え字の値とセル番地をリンクさせてIF文で判定し、途中で特定の値が入ったセルがあればその時点でExit Forを実行してFor文を抜ける、みたいな感じです。

ピンとこない方も多いと思うので、サンプルコードの紹介です。適当なシートに貼り付けて実行してみてください。

Sub test_ForExit_Cells()
    
    Dim i                       As Long
    Dim targetVal               As String
    
    targetVal = "はりぼなブログ"
    
    For i = 0 To 10
        If Range("A1").Offset(i, 0) = targetVal Then
            Exit For
        End If
    Next i
    
    If i = 11 Then
        MsgBox targetVal & "はありませんでした。"
    Else
        MsgBox 1 + i & "行目に" & targetVal & "が見つかりました。"
    End If
    
End Sub

A列の任意のセル(繰り返し上限回数より上に!)にtargetValと同じ値を入力しておきます。

Exit Forの使用例_セルの値に応じてExit Forを実行させる_1

今回はA7セルに「はりぼなブログ」を入力しておき、マクロを実行してみましょう。

Exit Forの使用例_セルの値に応じてExit Forを実行させる_2

7行目に「はりぼなブログ」が見つかった旨のメッセージボックスが表示されました。

スポンサーリンク

まとめ

今回は任意のタイミングでFor文を抜ける方法について紹介しました。

Exit Forを使用する際は、IF文と組み合わせて特定のタイミングで実行させて処理を抜ける、といった使い方をするようにしましょう。

コメント

タイトルとURLをコピーしました