
Excelマクロを書き始めると、ほぼ確実に通る道があります。
それが――
If 条件1 Then
…
ElseIf 条件2 Then
…
ElseIf 条件3 Then
…
Else
…
End If
最初は問題ありません。
でも条件が増えてくると……
-
どこで何を判定しているのか分かりにくい
-
修正するときに壊しそうで怖い
-
見た目がゴチャゴチャして読む気がしない
そんな悩みを一気に解決してくれるのがSelect Case 文です。
🌱 Select Case とは?
「1つの値に対して、場合分けをきれいに書ける構文」です。
基本構文
Select Case 判定する値
Case 値1
処理
Case 値2
処理
Case Else
それ以外の処理
End Select
👉 If文の連続より読みやすいのが特徴です。
😵 よくある If文地獄の例
まずは、ありがちなコードから。
If score >= 90 Then
result = "A"
ElseIf score >= 80 Then
result = "B"
ElseIf score >= 70 Then
result = "C"
ElseIf score >= 60 Then
result = "D"
Else
result = "F"
End If
条件を目で追うのが少し大変ですよね。
✨ Select Case で書き直すとこうなる!
Select Case score
Case Is >= 90
result = "A"
Case Is >= 80
result = "B"
Case Is >= 70
result = "C"
Case Is >= 60
result = "D"
Case Else
result = "F"
End Select
どうでしょう?
-
条件の並びがわかりやすくなる
-
どの範囲がどの評価か明確
-
後から修正もしやすい
これが「コードが美しくなる」瞬間です✨
🎯 実務で超よく使う例①:ステータス判定
Select Case status
Case "未対応"
Cells(i, 3).Interior.Color = vbRed
Case "対応中"
Cells(i, 3).Interior.Color = vbYellow
Case "完了"
Cells(i, 3).Interior.Color = vbGreen
Case Else
Cells(i, 3).Interior.Color = vbWhite
End Select
👉
-
状態ごとの処理が分かりやすい
-
追加・削除が簡単
If文で書くより、メンテナンス性がいいです。
🧩 実務で超よく使う例②:曜日判定
Select Case Weekday(Date)
Case vbSaturday, vbSunday
MsgBox "今日は休日です"
Case Else
MsgBox "今日は平日です"
End Select
Case に 複数値をまとめて書けるのも Select Case の強み。
🧠 Case で使える便利な書き方
範囲指定
Case 1 To 10
条件指定
Case Is >= 100
複数一致
Case "A", "B", "C"
これだけ覚えておけば、実務ではほぼ困りません。
⚠️ Select Case の注意点
-
判定するのは 1つの値だけ
-
複雑な論理条件(AND / OR を多用)は If の方が向く場合もある
-
条件が「同じ対象に対する分岐」なら Select Case が最適
🪄 If と Select Case の使い分けまとめ
| シーン | おすすめ |
|---|---|
| 単純な条件1〜2個 | If |
| 同じ値で分岐が多い | Select Case |
| 状態・区分・コード判定 | Select Case |
| 複雑な論理条件 | If |
✨ まとめ:Select Case は「読みやすさ」を買う構文
-
条件分岐が多くなったら 迷わず Select Case
-
コードが整理され、ミスも減る
-
将来の自分や他人にやさしいマクロになる
「動くコード」から
「美しく、直しやすいコード」へ。
Select Case は、その第一歩です。