練習問題(入れ子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でメッセージに改行を入れると見やすくなる
