ExcelVBA ループ処理途中でスキップ|強制終了などのコードの書き方

 

ExcelVBA  ループ処理は、データを効率的に処理するために使用されます。その中で特定の条件で「ループをスキップ」「ループを強制終了」「最終行まで処理」「ループから抜ける」などの操作は非常に重要です。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

Excel VBA ループ処理途中でスキップの利用シーン

以下のようなシーンで利用で表示します。

1.ループスキップ ( Continue )
特定の条件で処理をスキップしたいとき(例: 空白セルを無視)

2.ループ強制終了 ( Exit )
条件が満たされた場合にループ全体を終了したいとき(例: データが見つかったら処理を終了)

3.最終行まで ( 最終行の自動取得 )
データが存在する最後の行まで処理を繰り返したいとき(例: データが動的に変化する場合)

4.ループから抜ける ( Exit For / Exit Do )
Exit 文でループから抜けて処理を続行したいとき。

Excel VBA ループ処理途中でスキップ使い方と注意点

(1) ループスキップ
ループ内で If 文を使用し、条件が満たされた場合は GoTo や Exit を使わず、単純に処理を次に進める。

注意点:GoTo を多用するとコードが読みづらくなるので注意。

(2) ループ強制終了
Exit For や Exit Do を使うことで、必要なタイミングでループ全体を終了できる。

注意点:必要のない箇所で使用すると意図しない結果になる可能性があります。

(3) 最終行まで
最終行の取得方法として、 Cells(Rows.Count, 列番号).End(xlUp).Row を活用。

注意点:最終行取得では列に空白が含まれていると正確に取得できない場合があるため、データの整合性を確認しましょう。

Excel VBA  ループ処理途中でスキップ サンプルコード

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

標準モジュール(ループスキップ)

Option Explicit

Sub LoopSkipExample()
    Dim i As Long
    For i = 1 To 10
        ' 偶数の場合スキップ
        If i Mod 2 = 0 Then
            Debug.Print "スキップ: " & i
            GoTo SkipNext
        End If
        ' 偶数以外は処理
        Debug.Print "処理対象: " & i
SkipNext:
    Next i
End Sub

標準モジュール(ループ強制終了)

Option Explicit

Sub LoopExitExample()
    Dim i As Long
    For i = 1 To 10
        ' 条件が満たされたら終了
        If i = 5 Then
            MsgBox "終了: " & i
            Exit For
        End If
        Debug.Print "処理中: " & i
    Next i
End Sub

 

標準モジュール(最終行までのループ)

Option Explicit

Sub LoopToLastRow()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    ' シートの設定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' 最終行まで処理
    For i = 1 To lastRow
        Debug.Print "行番号: " & i & " | 値: " & ws.Cells(i, 1).Value
    Next i
End Sub

 

標準モジュール(ループから抜ける)

Option Explicit

Sub LoopBreakExample()
    Dim i As Long
    Do While True
        i = i + 1
        Debug.Print "処理中: " & i
        If i = 5 Then
            MsgBox "ループ終了: " & i
            Exit Do
        End If
    Loop
End Sub

Excel VBA  ループ処理途中でスキップ|まとめ

操作 目的 構文
ループスキップ 特定の条件で処理をスキップ If 条件 Then Continue
ループ強制終了 条件に合致したらループ全体を終了 Exit For / Exit Do
最終行まで 動的に変化するデータを全て処理 Cells(Rows.Count, 列番号).End(xlUp).Row
ループから抜ける 必要に応じて柔軟にループから抜けて次の処理に移る Exit

これらを使い分けることで、効率的でわかりやすいコードを書けるようになります。

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。