Excel VBA | If文の入れ子

VBA
スポンサーリンク

では、「Excel VBAでIf文の中にさらにIf文を書く(入れ子にする)」というテーマを、プログラミング初心者向けにかみ砕いて説明します。


基本の考え方

  • If文は「条件が正しいかどうか」を調べる仕組み。
  • 条件がTrueならその中の処理を実行、FalseならElse側を実行。
  • その「処理」の中にさらにIf文を入れることができる。これを「ネスト(入れ子)」と呼ぶ。

👉 イメージは「大きな条件の中で、さらに細かい条件を調べる」感じです。


例題1:テストの合格判定

「50点以上なら合格。ただし70点未満ならレポート提出が必要」というルールを作ってみます。

Sub TestResult()
    Dim score As Integer
    Dim msg As String
    
    score = Range("B2").Value   ' セルB2の点数を読み込む
    
    If score >= 50 Then
        msg = "合格です"
        
        If score < 70 Then
            msg = msg & vbNewLine & "追加レポートが必要です"
        End If
        
        MsgBox msg
    Else
        MsgBox "不合格です"
    End If
End Sub
VB

解説

  • 外側のIf → 「50点以上か?」を判定。
  • 内側のIf → 「70点未満か?」をさらに判定。
  • 結果:
    • 50点未満 → 「不合格です」
    • 50〜69点 → 「合格です」「追加レポートが必要です」
    • 70点以上 → 「合格です」

例題2:商品在庫チェック

「在庫があるかどうか → さらに在庫数が少ないかどうか」を判定する例。

Sub StockCheck()
    Dim stock As Integer
    stock = Range("C2").Value   ' セルC2の在庫数
    
    If stock > 0 Then
        MsgBox "在庫あり"
        
        If stock < 5 Then
            MsgBox "在庫が少ないので補充してください"
        End If
    Else
        MsgBox "在庫なし"
    End If
End Sub
VB

解説

  • 在庫が0より大きければ「在庫あり」。
  • さらに在庫が5未満なら「補充してください」と追加メッセージ。
  • 在庫が0なら「在庫なし」。

ポイント

  • 外側のIfで大きな条件を判定
  • 内側のIfで細かい条件を判定
  • ネストを深くしすぎると読みにくいので、条件が多いときは ElseIf を使う方がシンプル。

初心者へのアドバイス

  • まずは「外側で大きな条件」「内側で細かい条件」と整理して考える。
  • 実務では「合格判定」「在庫チェック」「日付判定」などでよく使う。
  • ネストは便利だけど、複雑になりすぎないように注意。

👉 まとめると、If文の入れ子は「大きな条件の中でさらに細かい条件を調べる」ための仕組みです。
初心者は「外側でざっくり判定 → 内側で細かく判定」と覚えると理解しやすいです。

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