【VBA】For文を途中で抜ける|サンプルコード多数

この記事では、VBA(Visual Basic for Applications)で使用するFor文を途中で抜ける方法について、解説します。Exit Forステートメントの使い方、その具体例、そして実用的なサンプルコードを解説します。

目次

Exitステートメントとは

基本的な使い方

VBAで繰り返し処理を途中で抜けるには、Exitステートメントが必要です。このステートメントは、For文であればExit For、Do文であればExit Doといった形で使用します。このステートメントは通常、If...ThenSelect Caseステートメントと併用し、特定の条件を満たした場合にループを抜けるように設計されます。

構文

Exit [ステートメント名]
項目説明
ステートメント名抜けたいループの種類(For、Doなど)を指定します。

サンプルコード集

使用例1:値が0のセルを見つけたらループを抜ける

サンプルコード

Sub ExitSample1()
    Dim i As Long
    For i = 1 To 7
        If Cells(i, 1).Value = 0 Then
            Exit For
        End If
    Next i
    Debug.Print "i=" & i  ' ループ脱出時のカウンタ変数iを出力
End Sub

処理の流れ

  1. Dim i As Longで変数iをLong型として宣言します。
  2. For i = 1 To 7で、iが1から7までのループを開始します。
  3. If Cells(i, 1).Value = 0 Thenで、A列(列番号1)のi行目のセルが0かどうかを判定します。
  4. もし0であれば、Exit Forでループを抜けます。
  5. 最後に、Debug.Print "i=" & iで、どの段階でループを抜けたかを出力します。

このコードは、特にExcelのA列に0が含まれているかどうかを調べる際に便利です。

使用例2:列Aと列Bの値を加算し、合計が500になるか調べる

サンプルコード

Sub ExitSample2()
    Dim i As Long, j As Long
    Dim Sum500 As Boolean
    For i = 1 To 5
        For j = 1 To 5
            If Cells(i, 1).Value + Cells(j, 2).Value = 500 Then
                Sum500 = True
                Exit For  ' 合計が500になったら内側のループを抜ける
            Else
                Sum500 = False
            End If
        Next j
        If Sum500 = True Then  ' 外側のループも抜ける
            Exit For
        End If
    Next i
    MsgBox Sum500
End Sub

処理の流れ

  1. Dim i As Long, j As Longで、変数ijをLong型として宣言します。
  2. Dim Sum500 As Booleanで、合計が500になったかどうかを格納するBoolean型の変数Sum500を宣言します。
  3. 外側のFor i = 1 To 5ループと内側のFor j = 1 To 5ループを用いて、列Aと列Bの各セルの値を加算します。
  4. If Cells(i, 1).Value + Cells(j, 2).Value = 500 Thenで、加算した値が500になるかを判定します。
  5. もし500であれば、Sum500 = Trueにして、Exit Forで内側のループを抜けます。
  6. 外側のループも、If Sum500 = True Thenで抜けるようにしています。

このコードは、特定の条件下での計算を高速化する際に有用です。

使用例3:配列内の特定の値を見つけたらループを抜ける

サンプルコード

Sub ExitSample3()
    Dim arr() As Variant
    Dim i As Long
    arr = Array(10, 20, 30, 40, 50)
    For i = LBound(arr) To UBound(arr)
        If arr(i) = 30 Then
            Exit For
        End If
    Next i
    Debug.Print "Found at index: " & i
End Sub

処理の流れ

  1. Dim arr() As Variantで、Variant型の動的配列arrを宣言します。
  2. arr = Array(10, 20, 30, 40, 50)で、配列に値を代入します。
  3. For i = LBound(arr) To UBound(arr)で、配列の最小インデックスから最大インデックスまでループします。
  4. If arr(i) = 30 Thenで、配列内に30が存在するかを確認します。
  5. 30が見つかれば、Exit Forでループを抜けます。

このコードは、配列内に特定の値が存在するかどうかを高速に調べる際に便利です。

使用例4:文字列内で特定の文字を見つけたらループを抜ける

サンプルコード

Sub ExitSample4()
    Dim str As String
    Dim i As Long
    str = "Hello, World!"
    For i = 1 To Len(str)
        If Mid(str, i, 1) = "," Then
            Exit For
        End If
    Next i
    Debug.Print "Comma found at position: " & i
End Sub

処理の流れ

  1. Dim str As Stringで、String型の変数strを宣言します。
  2. str = "Hello, World!"で、文字列に値を代入します。
  3. For i = 1 To Len(str)で、文字列の長さだけループします。
  4. If Mid(str, i, 1) = "," Thenで、文字列内にカンマが存在するかを確認します。
  5. カンマが見つかれば、Exit Forでループを抜けます。

このコードは、文字列内に特定の文字が存在する位置を探す際に有用です。

FAQ

Q:Exit ForExit Doの違いは何ですか?

A:Exit ForForループを途中で抜けるためのステートメントです。一方で、Exit DoDoループを途中で抜けるためのステートメントです。それぞれのステートメントは、対応するループ構造内でのみ使用できます。

Q:Exit Forを使うと、ループの後の処理は実行されるのですか?

A:はい、Exit Forを使ってループを抜けた後、その後の処理は通常通り実行されます。Exit Forはループを終了するだけで、プログラムの実行自体を停止するわけではありません。

Q:Exit Forを使うと、Nextステートメントは実行されますか?

A:いいえ、Exit Forを使ってループを抜けると、Nextステートメントはスキップされます。そのため、Nextに関連する処理(例えばカウンタ変数の更新など)は行われません。

Q:Exit ForFor Eachループでも使えますか?

A:はい、Exit ForFor Eachループでも使用できます。For Eachループ内でExit Forを使うと、そのループは即座に終了します。

Q:Exit Forを使うと、ネストされたループすべてが終了するわけではないですよね?

A:その通りです。Exit Forを使うと、現在のForループだけが終了します。ネストされた外側のループは影響を受けません。外側のループも終了させたい場合は、別途そのループに対してExit Forを使用する必要があります。

Q:Exit ForGoToの違いは何ですか?

A:Exit Forは特定のForループを終了させる専用のステートメントです。一方、GoToはプログラム内の任意の位置にジャンプするためのステートメントです。GoToはより汎用的ですが、プログラムの流れを追いにくくする可能性があります。

Q:Exit Forを使わずにループを抜ける方法はありますか?

A:はい、条件式を使ってループの継続条件をFalseにすることで、Exit Forを使わずにループを抜けることも可能です。しかし、この方法はコードの可読性が低下する可能性があります。

関連動画

まとめ

VBAでのFor文を途中で抜ける方法は、Exit Forステートメントを使用することで簡単に実現できます。このステートメントは、特定の条件下でループを抜ける際に非常に便利です。今回の記事で紹介した多数のサンプルコードを参考に、ぜひ実際のプログラミングで活用してください。

Excelのショートカットキーの練習

当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。

下のスタートボタンを押して練習モードに入ります。
STARTSTOP
※入力モード切り替え ctrl + shift + alt + space
PRE
NEXT
現在の問題をリストから除外
除外したリストをリセット
現在の除外状況のURL取得
コピー
ガイドモード
リピートモード

※推奨ブラウザ Google Chrome

PUSH ENTER
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次