Excel VBA | If文の入れ子

VBA
スポンサーリンク

では、Excel VBAの「入れ子のIf文(Ifの中にIfを書く)」を、プログラミング初心者向けに、かみ砕いて、例題を交えて丁寧に説明します。


1. 入れ子のIf文って何?

入れ子(ネスト)とは、「ある処理の中に、さらに別の処理を入れること」です。

Excel VBAでは、If文の中にまたIf文を書くことで、段階的に条件を判定できます。

例えるなら:

  • 「テストの点数が50点以上なら合格」
  • 「さらに70点未満なら追加のレポートが必要」

こういう「条件の中に条件がある場合」に便利です。


2. 基本のIf文の書き方

まず、普通のIf文はこう書きます:

If 条件 Then
    ' 条件がTrueのときの処理
Else
    ' 条件がFalseのときの処理
End If
VB

3. 入れ子の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メッセージ
45False不合格です
55TrueTrue合格です追加レポートが必要です
75TrueFalse合格です

例題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メッセージ
15False未成年です
30TrueTrue成人です(働き盛り)
70TrueFalse成人です(高齢者)

ポイントまとめ

  1. 段階的な条件判定ができる → 「条件1を満たしたら条件2もチェック」など
  2. 入れ子を深くしすぎない → 読みにくくなる
  3. ElseIfと組み合わせると、コードがもっとすっきり書ける
  4. 文字列の改行には vbNewLine を使える
  5. セルの値を使う場合は Range(“セル”).Value を忘れずに

初心者向けのコツ

  • 最初は入れ子1段階(Ifの中に1つだけIf)で練習
  • 条件の流れを紙に書いてからコードにすると理解しやすい
  • メッセージボックスで結果を確認するとデバッグが簡単
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました