ExcelVBAで条件分岐を書く際、多くの人が利用するのが If ~ ElseIf ~ Else 構文です。この仕組みを使えば、値や条件に応じて処理を切り替えることができます。
しかし実際にコードを書いてみると、「特定の条件のときは何もしないようにしたい」「Elseのところは空白で良いのか?」といった疑問が出てくることがあります。処理を意図的にスキップする方法を理解していないと、「エラーになった」「余計なメッセージが出てしまった」といったトラブルにつながりやすいのです。
この記事では「vba if elseif else 何もしない」をテーマに、処理を実行せずにスキップする方法、正しい書き方、実務での応用例を詳しく解説します。
目次
- ✅ If ElseIf Elseで「何もしない」とは?
- ・「何もしない」とは処理をスキップすること
- ・典型的なシーン
- ✅ If ElseIf Elseの基本構文
- ・通常の使い方
- ・「何もしない」を実装する場合
- ✅ 「何もしない」を表現する方法
- ・単純に空欄にする
- ・Exit Subを使う
- ・GoToを利用してスキップする
- ・条件分岐の中に「何も書かない」ブロックを置く
- ✅ 実務での活用例
- ・特定の値は処理対象外とする
- ・入力チェックでスキップ
- ・処理の条件を明示して残す
- ✅ ElseIfで「何もしない」ときの注意点
- ✅ Select Caseを使った「何もしない」
- ・Case Elseで処理なし
- ・範囲指定と組み合わせる
- ✅ 実務でありがちな誤りと対策
- ■ まとめ:If ElseIf Elseで「何もしない」を正しく使いこなそう
✅ If ElseIf Elseで「何もしない」とは?
・「何もしない」とは処理をスキップすること
VBAでは、条件が成立しても特定の処理を実行させずにスキップする場合があります。例えば「条件に一致したら何もせず次の処理へ進める」といったイメージです。
・典型的なシーン
- 特定の値のときだけスキップする
- 条件は網羅したいが処理不要のケースがある
- Elseブロックを明示的に「処理なし」にする参考:【VBA】For文:特定の条件の場合 次のループへ進む(スキップ)方法
✅ If ElseIf Elseの基本構文
・通常の使い方
If x = 1 Then
MsgBox "1です"
ElseIf x = 2 Then
MsgBox "2です"
Else
MsgBox "その他"
End If
・「何もしない」を実装する場合
If x = 1 Then
MsgBox "1です"
ElseIf x = 2 Then
' 何もしない
Else
MsgBox "その他"
End If
コメントを残しておくと意図が明確になります。
参考:【VBA】If文を使って次の処理へ進む方法|条件分岐・スキップ・中断の実例解説
✅ 「何もしない」を表現する方法
・単純に空欄にする
If x = 10 Then
' 何もしない
Else
MsgBox "処理を実行"
End If
このように空欄にするだけでも問題ありません。
・Exit Subを使う
処理全体を終了させたいときは Exit Sub を使用します。
If x < 0 Then
' マイナスなら処理をやめる
Exit Sub
Else
MsgBox "正の数です"
End If
参考:【VBA】処理を止める「Exit」の使い方|Sub・Function・ループでの中断方法を解説・GoToを利用してスキップする
あまり推奨されませんが、ラベルを用意してスキップすることもできます。
If x = 0 Then
GoTo SkipProcess
Else
MsgBox "処理中"
End If
SkipProcess:
参考:【VBA】GoToステートメントの理解と使用方法・条件分岐の中に「何も書かない」ブロックを置く
複数条件の中で一部だけスキップする場合。
If x = 1 Then
MsgBox "処理1"
ElseIf x = 2 Then
' 何もしない
ElseIf x = 3 Then
MsgBox "処理3"
End If
✅ 実務での活用例
・特定の値は処理対象外とする
Sub SkipZero()
Dim c As Range
For Each c In Range("A1:A10")
If c.Value = 0 Then
' 0のときは何もしない
ElseIf c.Value > 0 Then
c.Interior.Color = vbGreen
Else
c.Interior.Color = vbRed
End If
Next c
End Sub
・入力チェックでスキップ
Sub InputCheck()
Dim val As Variant
val = Range("B1").Value
If IsEmpty(val) Then
' 空欄は何もしない
ElseIf IsNumeric(val) Then
MsgBox "数値です"
Else
MsgBox "文字列です"
End If
End Sub
・処理の条件を明示して残す
If status = "保留" Then
' 保留は処理しない
ElseIf status = "完了" Then
MsgBox "完了しました"
Else
MsgBox "未処理です"
End If
後からコードを読む人が理解しやすくなります。
✅ ElseIfで「何もしない」ときの注意点
- 条件は明確に残す
コメントを入れておかないと「処理漏れ」と誤解されやすい。 - Exit Subとの違いを理解する
Exit Subはマクロ全体を終了するため、「そのブロックだけスキップ」とは異なる。 - 可読性を意識する
複数の「何もしない」条件があるなら、逆に条件を整理するかSelect Caseに切り替えた方が分かりやすい。
✅ Select Caseを使った「何もしない」
参考:【VBA】Select Case文で「何もしない」条件
・Case Elseで処理なし
Select Case x
Case 1
MsgBox "ケース1"
Case 2
' 何もしない
Case Else
MsgBox "その他"
End Select
・範囲指定と組み合わせる
Select Case x
Case 1 To 5
MsgBox "1~5"
Case 6 To 10
' 何もしない
Case Else
MsgBox "その他"
End Select
✅ 実務でありがちな誤りと対策
- ElseIfとElse Ifを混同する
正しくは「ElseIf」でスペースは不要。 - End Ifを忘れる
ブロックを閉じないと「構文エラー」になる。 - 何もしない条件をコメントせず放置
他人から見て処理抜けに見えるため、必ずコメントを残す。 - 冗長な分岐
似た条件が続く場合は、逆にまとめて「Case」文で整理する方がよい。
■ まとめ:If ElseIf Elseで「何もしない」を正しく使いこなそう
- VBAではIf ElseIf Else構文で「何もしない」条件を実装できる。
- 方法は「空欄にする」「コメントを残す」「Exit Subで処理全体を終了」など。
- 実務では「特定条件をスキップ」「入力チェックで無視」「処理対象外を明示」などの用途で活用される。
- コメントを入れることで「処理漏れ」と「意図的なスキップ」を区別できる。
- 冗長になりすぎる場合は
Select Caseへの切り替えも検討すると良い。
ExcelVBAで「何もしない」を意識して条件分岐を組むと、コードの意図が明確になり、トラブルを未然に防ぐことができます。ぜひ本記事を参考にして、柔軟かつ分かりやすいコード設計を心がけてください。