Select Case文 VBAテクニック集 VBA一覧 文法・構文

【VBA】Select Case文の使用例と適用パターン|条件分岐を効率化する方法

ExcelVBAを使ったプログラミングでは、条件分岐を扱う場面が数多く登場します。その中で最も基本的なのが If ~ ElseIf ~ Else ですが、条件が増えるとコードが複雑化してしまい、保守性や可読性が低下します。

そこで活躍するのが Select Case です。複数条件をシンプルに整理し、スッキリとしたコードを記述できるため、実務での利用頻度も非常に高い構文です。

この記事では「vba Select Case文の使用例と適用パターン」をテーマに、基本構文から応用的な使い方、If文との違い、実務における適用パターンまで徹底解説します。

✅ Select Case文の基本構文

・基本形

Select Case 式
    Case 値1
        ' 条件1に一致したときの処理
    Case 値2
        ' 条件2に一致したときの処理
    Case Else
        ' それ以外の場合
End Select

・If文との違い

  • If文:複雑な論理式に柔軟に対応できる

  • Select Case:単一式の値で複数条件を整理できる

条件が多い場合はSelect Caseの方がコードが読みやすくなります。

参考:【VBA】セルに特定の文字が入っていた場合にIF文で複数条件を処理する方法


✅ Select Case文の基本使用例

・数値による判定

Sub ScoreJudge()
    Dim score As Integer
    score = Range("A1").Value
    
    Select Case score
        Case Is >= 90
            MsgBox "S評価"
        Case Is >= 80
            MsgBox "A評価"
        Case Is >= 70
            MsgBox "B評価"
        Case Is >= 60
            MsgBox "C評価"
        Case Else
            MsgBox "D評価"
    End Select
End Sub

参考:【VBA】If文の複数分岐を実現する方法|効率的な条件分岐と実務応用

・文字列による判定

Select Case Range("B1").Value
    Case "完了"
        MsgBox "処理済"
    Case "進行中"
        MsgBox "対応中"
    Case "未処理"
        MsgBox "未対応"
    Case Else
        MsgBox "不明"
End Select

参考:【VBA】文字列を検索してセルの位置を取得する方法|Find・InStr・ループを使った実務例

✅ 複数条件のまとめ方

・複数値を1つにまとめる

Select Case Range("C1").Value
    Case "A", "B", "C"
        MsgBox "グループ1"
    Case "D", "E"
        MsgBox "グループ2"
    Case Else
        MsgBox "その他"
End Select

・範囲指定

Select Case Range("D1").Value
    Case 1 To 5
        MsgBox "1~5"
    Case 6 To 10
        MsgBox "6~10"
    Case Else
        MsgBox "その他"
End Select

✅ Select Caseの応用例

・曜日判定

Sub CheckWeekday()
    Dim dayName As String
    dayName = Format(Date, "ddd")
    
    Select Case dayName
        Case "月", "火", "水", "木", "金"
            MsgBox "平日です"
        Case "土", "日"
            MsgBox "休日です"
        Case Else
            MsgBox "不明な日付"
    End Select
End Sub

・商品分類

Sub ProductCategory()
    Dim code As String
    code = Range("A1").Value
    
    Select Case code
        Case "P01", "P02"
            MsgBox "食品"
        Case "P03", "P04"
            MsgBox "衣料品"
        Case "P05"
            MsgBox "雑貨"
        Case Else
            MsgBox "その他"
    End Select
End Sub

・エラーハンドリングでの利用

Sub ErrorJudge()
    Dim errCode As Integer
    errCode = Range("B1").Value
    
    Select Case errCode
        Case 100
            MsgBox "ファイルが見つかりません"
        Case 200
            MsgBox "アクセス拒否"
        Case 300
            MsgBox "不明なエラー"
        Case Else
            MsgBox "その他のエラー"
    End Select
End Sub

参考:【VBA】エラーを無視して終了する方法:エラーハンドリング

✅ Select Caseが適しているパターン

・条件が多い場合

10個以上の条件があるとき、If文だと可読性が大幅に低下します。Select Caseなら縦に並ぶだけで見やすく整理できます。


・単一変数の判定

1つの変数の値によって分岐する場合はSelect Caseが最適。


・グループ化できる場合

複数の値を1つのCaseにまとめられるため、条件の整理が容易になります。


✅ If文とSelect Case文の使い分け

・If文に向くケース

  • 条件が「変数A > 10 And 変数B < 5」など複雑なとき

  • 範囲外チェックなど論理式が重要な場合

・Select Caseに向くケース

  • 単一の値をもとに多岐分岐する場合

  • 条件数が多くなる場合

  • 可読性や保守性を重視する場合


✅ 実務に役立つSelect Caseのテクニック

・変数の型を意識する

文字列・数値でCaseの判定が異なるため、入力値の型を統一しておくことが重要です。

・Case Elseを必ず入れる

想定外の値が来た場合のために、必ずCase Elseを用意するのが実務上の鉄則です。

・複数列データにも応用できる

「部署コード」「ステータス」など複数列の組み合わせで分岐させたい場合は、条件式を文字列結合して判定に利用できます。

Select Case 部署 & "_" & ステータス
    Case "営業_完了"
        MsgBox "営業部 完了処理"
    Case "総務_未処理"
        MsgBox "総務部 未処理"
    Case Else
        MsgBox "その他"
End Select

✅ まとめ:Select Caseを使いこなして条件分岐を効率化しよう

  • Select Caseは複数条件を整理するのに最適な構文。

  • 数値判定、文字列判定、範囲指定など幅広く活用可能。

  • 実務では「点数評価」「商品分類」「曜日判定」「エラーハンドリング」などに応用できる。

  • 条件が多い場合や単一変数で分岐する場合はSelect Caseを使い、複雑な論理式はIf文で対応する。

  • Case Elseを必ず記述し、想定外の入力にも備える。

ExcelVBAでSelect Caseを使いこなせるようになると、コードが読みやすく保守性も高まり、業務効率化に大きく貢献します。本記事を参考に、ぜひ実務のマクロに活用してください。

    -Select Case文, VBAテクニック集, VBA一覧, 文法・構文