では、Excel VBAの「入れ子のIf文(Ifの中にIfを書く)」を、プログラミング初心者向けに、かみ砕いて、例題を交えて丁寧に説明します。
1. 入れ子のIf文って何?
入れ子(ネスト)とは、「ある処理の中に、さらに別の処理を入れること」です。
Excel VBAでは、If文の中にまたIf文を書くことで、段階的に条件を判定できます。
例えるなら:
- 「テストの点数が50点以上なら合格」
- 「さらに70点未満なら追加のレポートが必要」
こういう「条件の中に条件がある場合」に便利です。
2. 基本のIf文の書き方
まず、普通のIf文はこう書きます:
If 条件 Then
' 条件がTrueのときの処理
Else
' 条件がFalseのときの処理
End If
VB3. 入れ子のIf文の書き方
If文の中にもう一つ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つまり、大きな条件をまずチェックして、その中でさらに細かい条件をチェックするイメージです。
4. 実際の例題
例題1:テストの点数判定
- 50点以上 → 合格
- 50点以上かつ70点未満 → 合格 + 「追加レポートが必要」
Sub ScoreCheck()
Dim score As Integer
Dim msg As String
' セルB2から点数を取得
score = Range("B2").Value
' 大きな条件(50点以上か?)をチェック
If score >= 50 Then
msg = "合格です"
' 小さな条件(70点未満か?)をさらにチェック
If score < 70 Then
msg = msg & vbNewLine & "追加レポートが必要です"
End If
' メッセージを表示
MsgBox msg
Else
' 50点未満なら不合格
MsgBox "不合格です"
End If
End Sub
VB例題1の流れを図で可視化
| score | 条件1: score >= 50 | 条件2: score < 70 | メッセージ |
|---|---|---|---|
| 45 | False | – | 不合格です |
| 55 | True | True | 合格です追加レポートが必要です |
| 75 | True | False | 合格です |
例題2:年齢で判定
- 20歳以上 → 成人
- 20歳以上かつ65歳未満 → 働き盛り
- 65歳以上 → 高齢者
Sub AgeCheck()
Dim age As Integer
Dim msg As String
age = Range("B2").Value
If age >= 20 Then
msg = "成人です"
If age < 65 Then
msg = msg & "(働き盛り)"
Else
msg = msg & "(高齢者)"
End If
Else
msg = "未成年です"
End If
MsgBox msg
End Sub
VB例題2の流れ
| age | 条件1: age >= 20 | 条件2: age < 65 | メッセージ |
|---|---|---|---|
| 15 | False | – | 未成年です |
| 30 | True | True | 成人です(働き盛り) |
| 70 | True | False | 成人です(高齢者) |
ポイントまとめ
- 段階的な条件判定ができる → 「条件1を満たしたら条件2もチェック」など
- 入れ子を深くしすぎない → 読みにくくなる
- ElseIfと組み合わせると、コードがもっとすっきり書ける
- 文字列の改行には vbNewLine を使える
- セルの値を使う場合は Range(“セル”).Value を忘れずに
初心者向けのコツ
- 最初は入れ子1段階(Ifの中に1つだけIf)で練習
- 条件の流れを紙に書いてからコードにすると理解しやすい
- メッセージボックスで結果を確認するとデバッグが簡単
