Excel VBA | 「Ifの入れ子」と「ElseIf」 の違いを例題を交えて比較

VBA
スポンサーリンク

では、「Ifの入れ子」と「ElseIf」 の違いを、初心者向けに例題を交えて比較してみましょう。


Ifの入れ子(ネスト)

「50点以上なら合格。ただし70点未満ならレポート提出が必要」というルールを 入れ子のIf で書くとこうなります。

Sub TestResultNested()
    Dim score As Integer
    score = Range("B2").Value
    
    If score >= 50 Then
        MsgBox "合格です"
        
        If score < 70 Then
            MsgBox "追加レポートが必要です"
        End If
    Else
        MsgBox "不合格です"
    End If
End Sub
VB

特徴

  • 外側のIfで「合格か不合格」を判定。
  • 内側のIfで「追加レポートが必要か」を判定。
  • 条件を段階的に絞り込むときに便利。

ElseIfを使った書き方

同じルールを ElseIf で書くとこうなります。

Sub TestResultElseIf()
    Dim score As Integer
    score = Range("B2").Value
    
    If score < 50 Then
        MsgBox "不合格です"
    ElseIf score < 70 Then
        MsgBox "合格です" & vbNewLine & "追加レポートが必要です"
    Else
        MsgBox "合格です"
    End If
End Sub
VB

特徴

  • 条件を 一列に並べて判定できる。
  • ネストが浅くなるので コードが読みやすい
  • 「条件が互いに排他的(どれか1つだけ当てはまる)」な場合に向いている。

比較まとめ

書き方向いている場面メリットデメリット
Ifの入れ子大きな条件の中でさらに細かい条件を調べたいとき段階的に条件を絞れるネストが深くなると読みにくい
ElseIf条件が並列で排他的なときコードがすっきり読みやすい条件が複雑だと長くなりがち

初心者へのアドバイス

  • 「大きな条件の中でさらに細かく判定」→ 入れ子
  • 「条件を横並びで整理」→ ElseIf
  • 実務では「ElseIf」で書けるならそちらを選ぶ方が読みやすい。
  • ただし「まず合格かどうかを判定して、その中でさらに細かく分けたい」ような場合は入れ子が自然。

👉 まとめると、入れ子は段階的な判定、ElseIfは横並びの判定に向いています。

タイトルとURLをコピーしました