VBAテクニック集 VBA一覧 処理制御・待機・停止 文法・構文

【VBA】If文を使って次の処理へ進む方法|条件分岐・スキップ・中断の実例解説

ExcelVBAでプログラムを作成していると、「ある条件を満たしたら次の処理へ進めたい」「条件を満たさなければスキップしたい」といったケースは非常に多くあります。
このような処理の分岐を実現するための基本が If です。

この記事では、「vba 次の処理へ進む if」というキーワードで情報を探している方向けに、以下の内容を詳しく解説します。


If文の基本構文
✅ 条件成立時のみ処理を実行する方法
✅ 条件不成立時に処理をスキップして次へ進む方法
Exit SubGoTo と組み合わせて中断やジャンプを実現
✅ 実務で役立つ「次の処理へ進む」実例集

✅ If文の基本構文

VBAにおけるIf文の基本形は以下の通りです。

If 条件式 Then
    ' 条件が真(True)のときの処理
End If

また、条件が偽(False)の場合の処理を追加する場合は Else を使います。

If 条件式 Then
    ' 条件が真のとき
Else
    ' 条件が偽のとき
End If

さらに、複数条件を分岐させる場合は ElseIf を利用します。

If 条件式1 Then
    ' 条件1が真のとき
ElseIf 条件式2 Then
    ' 条件2が真のとき
Else
    ' どの条件にも当てはまらないとき
End If

参考:【VBA】IF文での複数条件の考え方と書き方のコツ

✅ 条件成立時のみ処理を実行し、成立しなければ次へ進む

例えば、A1セルが空欄の場合はスキップし、値が入っていればメッセージを表示するコードは以下の通りです。

If Range("A1").Value <> "" Then
    MsgBox "A1セルの値は " & Range("A1").Value
End If

この構文では、条件を満たさない場合(A1が空欄)は何もせずに次の処理へ進みます。


参考:【VBA】セルに特定の文字が入っていた場合にIF文で複数条件を処理する方法

✅ 条件不成立時に処理をスキップして次へ進む

If文の中に早期終了(Exit Sub / Exit Function / Continue的処理)を入れることで、条件を満たさない場合は即座に次の処理に進めます。

・条件不成立なら即スキップ

If Range("A1").Value = "" Then Exit Sub
MsgBox "A1セルの値は " & Range("A1").Value

この場合、A1が空欄なら Exit Sub でそのプロシージャを終了し、A1に値があれば次の処理が実行されます。


参考:【VBA】If文の条件を変数に入れて可読性を向上させる方法

✅ If文+Exitで「次の処理へ進む」を実現

・ループ処理で条件一致時だけ処理を実行

Dim i As Long
For i = 1 To 10
    If Cells(i, 1).Value = "" Then
        ' 空欄なら次のループへ進む(スキップ)
    Else
        MsgBox "行 " & i & " の値:" & Cells(i, 1).Value
    End If
Next i

この例では空欄行をスキップしていますが、もっと簡潔に書くなら GoTo や条件を反転させる書き方もあります。


参考:【VBA】処理を止める「Exit」の使い方|Sub・Function・ループでの中断方法を解説

 

✅ GoToで処理の流れを制御して次へ進む

GoTo を使えば、条件によって処理を飛ばして次のステップに進めます。

Dim i As Long
For i = 1 To 10
    If Cells(i, 1).Value = "" Then GoTo SkipProcess
    MsgBox "行 " & i & " の値:" & Cells(i, 1).Value
SkipProcess:
Next i

GoTo は便利ですが、乱用するとコードが読みにくくなるため、なるべくIf文やExitで制御する方が望ましいです。


参考:【VBA】GoToステートメントの理解と使用方法

✅ 実務で役立つ「Ifで次の処理へ進む」例

・入力チェック後に処理を続行

Sub RegisterData()
    If Range("A1").Value = "" Then
        MsgBox "名前を入力してください", vbExclamation
        Exit Sub
    End If

    If Range("B1").Value = "" Then
        MsgBox "年齢を入力してください", vbExclamation
        Exit Sub
    End If

    MsgBox "登録完了"
End Sub

・特定条件を満たすデータだけ処理

Sub ProcessOnlySales()
    Dim i As Long
    For i = 2 To 100
        If Cells(i, 2).Value >= 100000 Then
            Cells(i, 3).Value = "達成"
        End If
    Next i
End Sub

・早期終了と組み合わせて無駄な処理を省く

Sub ProcessData()
    If WorksheetFunction.CountA(Range("A1:A100")) = 0 Then
        MsgBox "データがありません"
        Exit Sub
    End If

    MsgBox "データ処理を開始します"
End Sub

■ If文を使った次処理制御のポイント

ポイント説明
条件はできるだけ簡潔に可読性が上がり、バグも減る
早期終了を活用する不要な処理を避け、動作が早くなる
Elseを使いすぎないネストが深くなると可読性が低下
GoToは必要最低限使いすぎるとコードが複雑化

 

■ まとめ|If文で次の処理へ進む制御はVBAの基本

ExcelVBAでの「次の処理へ進む」ロジックは、If文による条件分岐が基本です。
また、Exit SubExit ForGoTo を組み合わせれば、状況に応じた柔軟な処理制御が可能になります。


・本記事のまとめ

  • If文は条件分岐の基本で、条件成立時だけ処理を実行できる
  • 条件不成立時は何もせず次の処理へ進められる
  • 早期終了(Exit)で無駄な処理を省ける
  • GoToは必要最低限にし、可読性を保つ
  • 実務では入力チェックやデータ条件分岐に頻繁に活用

    -VBAテクニック集, VBA一覧, 処理制御・待機・停止, 文法・構文