Excel VBA | If文を使った条件分岐

VBA
スポンサーリンク

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 “正の数”
ElseFalseのときの処理If~Else
ElseIf複数条件の分岐点数によるランク分け
And / Or / Not複数条件の組み合わせIf x > 0 And y < 10 Then
IsNumeric / Trim型チェック・空白除去エラー防止や入力確認
Exit Sub途中で終了不正入力時に使う

学習の次ステップ

If文が分かったら、次は:

  • Select Case(多分岐を見やすく書ける)
  • For / Do ループと組み合わせる
  • 条件によってセル操作・計算を分ける自動処理を作る

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました