Excel VBA | If文の入れ子

VBA
スポンサーリンク

要点まとめ

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文を入れることで複雑な条件分岐が可能になる。外側で大きな条件、内側で細かい条件を判定するのが基本パターンです。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました