IF文 VBAテクニック集 VBA一覧 文法・構文

【VBA】If ElseIf Elseを使って「何もしない」条件分岐を実装する方法

ExcelVBAで条件分岐を書く際、多くの人が利用するのが If ~ ElseIf ~ Else 構文です。この仕組みを使えば、値や条件に応じて処理を切り替えることができます。

しかし実際にコードを書いてみると、「特定の条件のときは何もしないようにしたい」「Elseのところは空白で良いのか?」といった疑問が出てくることがあります。処理を意図的にスキップする方法を理解していないと、「エラーになった」「余計なメッセージが出てしまった」といったトラブルにつながりやすいのです。

この記事では「vba if elseif else 何もしない」をテーマに、処理を実行せずにスキップする方法、正しい書き方、実務での応用例を詳しく解説します。

✅ If ElseIf Elseで「何もしない」とは?

・「何もしない」とは処理をスキップすること

VBAでは、条件が成立しても特定の処理を実行させずにスキップする場合があります。例えば「条件に一致したら何もせず次の処理へ進める」といったイメージです。

・典型的なシーン


✅ 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で「何もしない」ときの注意点

  1. 条件は明確に残す
    コメントを入れておかないと「処理漏れ」と誤解されやすい。
  2. Exit Subとの違いを理解する
    Exit Subはマクロ全体を終了するため、「そのブロックだけスキップ」とは異なる。
  3. 可読性を意識する
    複数の「何もしない」条件があるなら、逆に条件を整理するか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で「何もしない」を意識して条件分岐を組むと、コードの意図が明確になり、トラブルを未然に防ぐことができます。ぜひ本記事を参考にして、柔軟かつ分かりやすいコード設計を心がけてください。

    -IF文, VBAテクニック集, VBA一覧, 文法・構文