条件分岐には If〜Then と Select Case の2種類があります。2〜3パターン程度なら If が使いやすいですが、4パターン以上になると Select Case の方がコードがすっきりして読みやすくなります。
この記事では、Select Case の基本構文・具体例・範囲指定や複数条件の応用を解説します。
Select Caseの基本構文とは?
Select Case で確認する値を指定し、各 Case にその値がどうなっているかを書きます。
Select Case 確認する値
Case 条件1
実行する処理1
Case 条件2
実行する処理2
Case Else
どれにも当てはまらないときの処理
End Select
Select Case で始まり End Select で終わります。Case Else はどの条件にも当てはまらなかった場合の処理で、不要なら省略できます。
セルの値に応じて背景色を変えるには?
A1セルに入力されたタスクの優先度に応じて、背景色を4パターンで変更する例です。
Select Case Cells(1, 1).Value
Case "最優先"
Cells(1, 1).Interior.Color = RGB(255, 0, 0) ' 赤
Case "優先"
Cells(1, 1).Interior.Color = RGB(237, 125, 49) ' 橙
Case "通常"
Cells(1, 1).Interior.Color = RGB(255, 255, 0) ' 黄
Case "余裕あり"
Cells(1, 1).Interior.Color = RGB(173, 216, 230) ' 水色
Case Else
Cells(1, 1).Interior.ColorIndex = xlNone ' 色なし
End Select
Select Case の横に書いた Cells(1,1).Value がどの Case に一致するかで処理が分かれます。
範囲指定や複数条件で使うには?
数値の範囲や複数の値をまとめて条件指定することもできます。
' 範囲指定:1〜10は優、11〜20は良
Select Case score
Case 1 To 10
label = "優"
Case 11 To 20
label = "良"
Case Else
label = "可"
End Select
' 複数値指定:1・3・5のいずれか
Select Case num
Case 1, 3, 5
MsgBox "奇数です"
Case 2, 4, 6
MsgBox "偶数です"
End Select
IfとSelect Caseの使い分けとは?
条件の数と内容によって使い分けるのが基本です。
| 場面 | 向いている構文 |
|---|---|
| 2〜3パターンの分岐 | If〜ElseIf〜Else |
| 4パターン以上の分岐 | Select Case |
| 同じ変数の値で複数パターン分岐 | Select Case |
| 複数の変数を組み合わせた条件 | If〜And/Or |
まとめ
Select Case 値で確認する値を指定し、各Caseで処理を分けるCase Elseでどの条件にも当てはまらないときの処理を書けるCase 1 To 10で範囲指定、Case 1, 3, 5で複数値指定もできる- 4パターン以上の分岐では
If〜ElseIfよりSelect Caseの方がすっきり書ける - 複数の変数を組み合わせた複雑な条件は
If〜And/Orの方が適している
よくある質問
Select CaseはIfと比べて処理速度が違いますか?
ほとんど差はありません。どちらを使うかは主に読みやすさで判断します。同じ変数を多くのパターンと比較する場合は Select Case の方がコードが整理されます。
文字列と数値を混在させて条件指定できますか?
できません。Select Case で確認する値の型と Case の型を一致させる必要があります。文字列を確認する場合は Case "文字列"、数値なら Case 1 のように書きます。
Case内の処理を複数行書くことはできますか?
できます。次の Case や End Select が来るまでの間に何行でも処理を書けます。複数のセルを操作したり変数に代入したりする処理も問題なく書けます。
Select Caseでは大文字・小文字を区別しますか?
デフォルトでは区別しません。区別したい場合はモジュールの先頭に Option Compare Binary と書くことで区別するモードになります。
Select Caseの中にFor〜NextやIfを入れることはできますか?
できます。各 Case ブロックの中に For〜Next や If〜End If を入れることができます。複雑な処理でも各パターンごとに整理して書けます。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



