要点まとめ
Excel VBAでは、If文の中にさらにIf文を書く(入れ子にする)ことができる。これを使うと「条件がTrueのとき、さらに別の条件を調べる」といった複雑な分岐が可能になる。初心者は「外側のIfで大きな条件を判定 → 内側のIfで細かい条件を判定」と覚えると理解しやすいです。
基本の考え方
- If文は条件がTrueなら処理を実行、FalseならElse側を実行。
- その「処理」の中に、さらに別のIf文を入れることができる。
- これを「ネスト(入れ子)」と呼ぶ。
基本の書き方
VBAでの基本的なIf文の書き方は次のようになります。
If 条件式 Then
条件がTrueのときの処理
Else
条件がFalseのときの処理
End If
VBこの中に、さらに別の If文を入れる(=入れ子にする)と、こうなります:
If 条件式1 Then
' 条件1がTrueのときの処理
If 条件式2 Then
' 条件1もTrue && 条件2もTrueのときの処理
Else
' 条件1はTrueだけど、条件2がFalseのときの処理
End If
Else
' 条件1がFalseのときの処理
End If
VBこのようにすることで、「条件1がTrue」の場合だけ、「条件2をさらにチェック」という流れを作れます。
さらに複数段階(条件3、条件4…)を入れたいなら、もっと深く入れ子にできます。
例題(合格判定)
セルB2の値を判定するプログラム例:
Option Explicit
Sub テスト()
Dim result As Integer
Dim msg As String
result = Range("B2").Value
If result > 50 Then
msg = "合格です"
If result < 70 Then
msg = msg & vbNewLine & "追加レポートが必要です"
End If
MsgBox msg
Else
MsgBox "不合格です"
End If
End Sub
VB解説
- 外側のIf → 「50点より大きいか?」を判定。
- 内側のIf → 「70点より小さいか?」をさらに判定。
- 50点以上70点未満なら「合格です」「追加レポートが必要です」と2行表示。
- 70点以上なら「合格です」だけ。
- 50点以下なら「不合格です」。
ポイント
- Ifの中にIfを入れると複雑な条件分岐ができる。
- vbNewLine を使うとメッセージを改行できる。
- ネストを深くしすぎると読みにくいので、場合によっては
ElseIfを使う方がシンプル。
初心者へのアドバイス
- まずは「外側のIfで大きな条件」「内側のIfで細かい条件」と整理する。
- ネストは便利だが、条件が多いときは
ElseIfを使う方が見やすい。 - 実務では「合格判定」「在庫チェック」「日付判定」などでよく使う。
👉 まとめると、If文の中にIf文を入れることで複雑な条件分岐が可能になる。外側で大きな条件、内側で細かい条件を判定するのが基本パターンです。
