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