ExcelVBAでプログラムを作成していると、「ある条件を満たしたら次の処理へ進めたい」「条件を満たさなければスキップしたい」といったケースは非常に多くあります。
このような処理の分岐を実現するための基本が If文 です。
この記事では、「vba 次の処理へ進む if」というキーワードで情報を探している方向けに、以下の内容を詳しく解説します。
✅ If文の基本構文
✅ 条件成立時のみ処理を実行する方法
✅ 条件不成立時に処理をスキップして次へ進む方法
✅ Exit Sub や GoTo と組み合わせて中断やジャンプを実現
✅ 実務で役立つ「次の処理へ進む」実例集
目次
✅ 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
✅ 条件成立時のみ処理を実行し、成立しなければ次へ進む
例えば、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で制御する方が望ましいです。
✅ 実務で役立つ「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 Sub や Exit For、GoTo を組み合わせれば、状況に応じた柔軟な処理制御が可能になります。
・本記事のまとめ
- If文は条件分岐の基本で、条件成立時だけ処理を実行できる
- 条件不成立時は何もせず次の処理へ進められる
- 早期終了(Exit)で無駄な処理を省ける
- GoToは必要最低限にし、可読性を保つ
- 実務では入力チェックやデータ条件分岐に頻繁に活用