Excel VBA | If文の入れ子

VBA
スポンサーリンク

練習問題(入れ子If)

では、Excel VBAの入れ子Ifを使った練習問題10問+解答例を紹介します。
プログラミング初心者向けに、ステップごとに考えやすい内容にしています。


問題1

セル B2 の点数が 50点以上なら「合格」
50点以上かつ 70点未満なら「追加レポートが必要」 と表示する。


問題2

セル B2 の年齢が 20歳以上なら「成人」
20歳以上かつ 65歳未満なら「働き盛り」
65歳以上なら 「高齢者」 と表示する。


問題3

セル B2 の数値が 0以上なら正の数
0以上かつ 100未満なら「小さい数」
100以上なら 「大きい数」
0未満なら 「負の数」 と表示する。


問題4

セル B2 に文字で曜日を入力。

  • 「土」「日」 → 「休日」
  • 平日 → 「平日」
  • 平日かつ文字が「水」 → 「水曜日は会議」

問題5

セル B2 の温度が 0度以上なら「氷は溶ける」
0度以上かつ 30度以上なら「暑い」
0度未満なら 「凍る」 と表示。


問題6

セル B2 の点数に応じて評価を表示

  • 90点以上 → 「秀」
  • 70点以上90点未満 → 「良」
  • 50点以上70点未満 → 「可」
  • 50点未満 → 「不可」

問題7

セル B2 の数値が偶数か奇数か判定

  • 偶数なら「偶数」
  • 偶数かつ100以上なら「大きい偶数」
  • 奇数なら「奇数」

問題8

セル B2 の値が

  • 100以上 → 「大きい」
  • 50以上100未満 → 「中くらい」
  • 50未満 → 「小さい」
  • さらに値が偶数か奇数かも判定して付加する

問題9

セル B2 に文字で「赤」「青」「黄」を入力

  • 赤 → 「STOP」
  • 青 → 「GO」
  • 黄 → 「注意」
  • その他 → 「不明」

問題10

セル B2 の点数でメッセージ表示

  • 80点以上 → 「優秀」
  • 60点以上80点未満 → 「普通」
  • 60点未満 → 「努力が必要」
  • さらに偶数か奇数かで「点数は偶数」「点数は奇数」も表示

解答例(サンプルコード)

問題1の解答

Sub Problem1()
    Dim score As Integer
    Dim msg As String
    
    score = Range("B2").Value
    
    If score >= 50 Then
        msg = "合格"
        If score < 70 Then
            msg = msg & vbNewLine & "追加レポートが必要"
        End If
    Else
        msg = "不合格"
    End If
    
    MsgBox msg
End Sub
VB

問題2の解答

Sub Problem2()
    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

問題3の解答

Sub Problem3()
    Dim num As Double
    Dim msg As String
    
    num = Range("B2").Value
    
    If num >= 0 Then
        msg = "正の数"
        If num < 100 Then
            msg = msg & "(小さい数)"
        Else
            msg = msg & "(大きい数)"
        End If
    Else
        msg = "負の数"
    End If
    
    MsgBox msg
End Sub
VB

問題4の解答

Sub Problem4()
    Dim day As String
    Dim msg As String
    
    day = Range("B2").Value
    
    If day = "土" Or day = "日" Then
        msg = "休日"
    Else
        msg = "平日"
        If day = "水" Then
            msg = msg & "(水曜日は会議)"
        End If
    End If
    
    MsgBox msg
End Sub
VB

問題5の解答

Sub Problem5()
    Dim temp As Double
    Dim msg As String
    
    temp = Range("B2").Value
    
    If temp >= 0 Then
        msg = "氷は溶ける"
        If temp >= 30 Then
            msg = msg & "(暑い)"
        End If
    Else
        msg = "凍る"
    End If
    
    MsgBox msg
End Sub
VB

問題6の解答

Sub Problem6()
    Dim score As Integer
    Dim msg As String
    
    score = Range("B2").Value
    
    If score >= 90 Then
        msg = "秀"
    Else
        If score >= 70 Then
            msg = "良"
        Else
            If score >= 50 Then
                msg = "可"
            Else
                msg = "不可"
            End If
        End If
    End If
    
    MsgBox msg
End Sub
VB

問題7の解答

Sub Problem7()
    Dim num As Integer
    Dim msg As String
    
    num = Range("B2").Value
    
    If num Mod 2 = 0 Then
        msg = "偶数"
        If num >= 100 Then
            msg = msg & "(大きい偶数)"
        End If
    Else
        msg = "奇数"
    End If
    
    MsgBox msg
End Sub
VB

問題8の解答

Sub Problem8()
    Dim num As Integer
    Dim msg As String
    
    num = Range("B2").Value
    
    If num >= 100 Then
        msg = "大きい"
    Else
        If num >= 50 Then
            msg = "中くらい"
        Else
            msg = "小さい"
        End If
    End If
    
    ' 偶数か奇数もチェック
    If num Mod 2 = 0 Then
        msg = msg & "(偶数)"
    Else
        msg = msg & "(奇数)"
    End If
    
    MsgBox msg
End Sub
VB

問題9の解答

Sub Problem9()
    Dim color As String
    Dim msg As String
    
    color = Range("B2").Value
    
    If color = "赤" Then
        msg = "STOP"
    Else
        If color = "青" Then
            msg = "GO"
        Else
            If color = "黄" Then
                msg = "注意"
            Else
                msg = "不明"
            End If
        End If
    End If
    
    MsgBox msg
End Sub
VB

問題10の解答

Sub Problem10()
    Dim score As Integer
    Dim msg As String
    
    score = Range("B2").Value
    
    If score >= 80 Then
        msg = "優秀"
    Else
        If score >= 60 Then
            msg = "普通"
        Else
            msg = "努力が必要"
        End If
    End If
    
    ' 偶数か奇数か判定
    If score Mod 2 = 0 Then
        msg = msg & vbNewLine & "点数は偶数"
    Else
        msg = msg & vbNewLine & "点数は奇数"
    End If
    
    MsgBox msg
End Sub
VB

✅ 練習のポイント

  • 段階的に条件を分けて考えるのが入れ子Ifの基本
  • ElseIfを使うと、ネストを浅くできる場合もある
  • Mod を使うと偶数・奇数判定が簡単
  • 文字列や数値の条件を組み合わせると、より実践的な分岐が作れる
  • vbNewLine でメッセージに改行を入れると見やすくなる
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました