If文の練習セット(初級〜中級)
「If文(条件分岐)」の内容を 練習問題 → 回答コード → 解説(動きの流れや初心者がつまずく点つき) の形で丁寧にまとめます。
例題①:数値の大小でメッセージを変える
🧠 問題
セル B2 に数値を入力します。
70 以上なら「合格」、それ以外なら「不合格」とメッセージを出すマクロを作りましょう。
✅ 回答コード
Sub CheckPassFail()
Dim score As Variant
score = Range("B2").Value
If score >= 70 Then
MsgBox "合格です!"
Else
MsgBox "不合格です。"
End If
End Sub
VB💬 解説
If score >= 70 Then
→ 70以上かどうかを判断します。- True のとき →
"合格です!"が表示される。 - False のとき →
"不合格です。"が表示される。 Elseがあるので、どちらか一方のメッセージが必ず表示されます。
🪄初心者ワンポイント
>=は「以上」。>は「より大きい」。=は「等しい」です。End Ifを忘れるとエラーになります(VBAでは必須)。
例題②:空白チェック
🧠 問題
セル A2 に何も入力されていなければ「未入力」と表示し、
何か入っていれば「入力済み」と表示するマクロを作ろう。
✅ 回答コード
Sub CheckEmpty()
If Trim(Range("A2").Value) = "" Then
MsgBox "未入力です。"
Else
MsgBox "入力済みです。"
End If
End Sub
VB💬 解説
Trim()は前後の空白を削除します。空白だけの入力を「空」として扱えます。""は空文字列。つまり「何もない状態」を意味します。- If文で = “” を使うと、「空かどうか」を判定できる というわけです。
🪄実践のコツ
- データ入力フォームを作るときなどに「未入力チェック」に使えます。
- さらに発展すると
Exit Subで後続処理を止めたりもできます。
例題③:点数でランク判定(ElseIf)
🧠 問題
セル B2 の点数に応じて以下のようにランクを表示する。
| 条件 | 表示する文字 |
|---|---|
| 90点以上 | A |
| 80〜89点 | B |
| 70〜79点 | C |
| それ未満 | F |
✅ 回答コード
Sub JudgeRank()
Dim s As Variant
s = Range("B2").Value
If s >= 90 Then
MsgBox "Aランクです"
ElseIf s >= 80 Then
MsgBox "Bランクです"
ElseIf s >= 70 Then
MsgBox "Cランクです"
Else
MsgBox "Fランクです"
End If
End Sub
VB💬 解説
ElseIfは「それ以外の条件」を順にチェックします。- 最初に True になったところで処理が実行され、それ以降の
ElseIfはスキップされます。 - つまりこの順番がとても大事。上から順に“ふるい落とす”感じです。
🪄よくあるミス
If s >= 70 Then
ElseIf s >= 90 Then ' ❌順番が逆だと、90以上も70で止まってしまう!
VB例題④:条件でセルの色を変える
🧠 問題
セル B2 に点数を入力します。
点数に応じて次のように背景色を変えるマクロを作りましょう。
| 点数 | 色 |
|---|---|
| 90点以上 | 緑 |
| 70〜89点 | 黄 |
| それ未満 | 赤 |
✅ 回答コード
Sub ColorByScore()
Dim s As Variant
s = Range("B2").Value
If Not IsNumeric(s) Then
MsgBox "数値を入力してください"
Exit Sub
End If
If s >= 90 Then
Range("B2").Interior.ColorIndex = 4 ' 緑
ElseIf s >= 70 Then
Range("B2").Interior.ColorIndex = 6 ' 黄
Else
Range("B2").Interior.ColorIndex = 3 ' 赤
End If
End Sub
VB💬 解説
IsNumeric()は「数値かどうか」を調べます。- 点数以外(例:「abc」)が入っていたらエラーになるので、最初にチェック。
Interior.ColorIndexでセルの背景色を変更できます。
(4=緑、6=黄、3=赤)Exit Subはそれ以降の処理を強制終了します。
🪄実用アイデア
- 点数や売上などのデータに自動的に色をつける「自動評価表」づくりに使えます。
例題⑤:偶数・奇数の判定
🧠 問題
セル B2 に数を入力し、
偶数なら「偶数です」、奇数なら「奇数です」と表示する。
✅ 回答コード
Sub EvenOddCheck()
Dim n As Variant
n = Range("B2").Value
If Not IsNumeric(n) Then
MsgBox "数値を入力してください"
Exit Sub
End If
If n Mod 2 = 0 Then
MsgBox "偶数です"
Else
MsgBox "奇数です"
End If
End Sub
VB💬 解説
Modは「割り算のあまり」を求める演算子。
例:5 Mod 2 = 1、6 Mod 2 = 0- あまりが 0 → 偶数、1 → 奇数
- 数値以外を入力したときのために
IsNumericで安全チェック。
🪄応用
- 番号が奇数の行だけ処理したいとき(例:For ループ+If Mod 2)にも使えます。
まとめ
| 概念 | 意味 | よく使う例 |
|---|---|---|
If ~ Then | 条件がTrueなら処理 | If x > 0 Then MsgBox “正の数” |
Else | Falseのときの処理 | If~Else |
ElseIf | 複数条件の分岐 | 点数によるランク分け |
And / Or / Not | 複数条件の組み合わせ | If x > 0 And y < 10 Then |
IsNumeric / Trim | 型チェック・空白除去 | エラー防止や入力確認 |
Exit Sub | 途中で終了 | 不正入力時に使う |
学習の次ステップ
If文が分かったら、次は:
Select Case(多分岐を見やすく書ける)For / Doループと組み合わせる- 条件によってセル操作・計算を分ける自動処理を作る

