では、「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は横並びの判定に向いています。
