このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】Select Caseの使い方を紹介(複数条件、範囲指定についても紹介)

2024年10月22日

今回はSelect Caseの使い方を紹介します。

Select Caseは複数の処理分岐を行うために使います。

If文でも処理分岐を行うことができますが、分岐が3個,4個と多いときはSelect Caseでまとめた方が読みやすくスッキリします。

Select Caseを上手に使って、1つレベルアップしてみましょう。

この記事では↓の内容が分かります。

  • Select Caseの基本的な使い方
  • Caseで複数条件を指定する方法
  • Caseで範囲指定する方法

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

Select Caseの基本的な使い方

Select Case 数値または文字列
    Case 条件1
        処理1
    Case 条件2
        処理2
    Case Else
        どの条件にも一致しなかった場合の処理
End Select

Select Caseはこのような構文となります。

Select Caseの後に「数値または文字列」を書きます。

この「数値または文字列」がCaseの後の条件と一致すると、その部分の処理が実行されます。

どの条件とも一致しないときはCase Elseの部分の処理が実行されます。

Sub Sample1()
    '英語の曜日を日本語に変換
    
    Dim strDay As String
    strDay = "Sat"
    
    Select Case strDay
        Case "Sun"
            MsgBox "日曜日です"
        Case "Mon"
            MsgBox "月曜日です"
        Case "Tue"
            MsgBox "火曜日です"
        Case "Wed"
            MsgBox "水曜日です"
        Case "Thu"
            MsgBox "木曜日です"
        Case "Fri"
            MsgBox "金曜日です"
        Case "Sat"
            MsgBox "土曜日です"
        Case Else
            MsgBox "正しい曜日にしてください。"
    End Select
End Sub

Select Caseのサンプルコードを1つ紹介します。

このコードは英語の曜日に応じて、日本語の曜日を表示させるサンプルコードです。

strDayの内容に応じて、表示されるメッセージが変わります。

例えば、strDay = “Sat"の部分をstrDay = “Sun"に替えると「日曜日です」と表示されます。
strDayと一致したCaseの処理が実行されるのが分かります。

Select Caseはこのように、「数値または文字列(ここではstrDay)」に応じて処理を分岐させるために使います。

Caseに複数条件を指定する方法

Caseの条件式を複数指定することができます。複数の条件は以下のように「,」(カンマ)で区切ります。

Case 条件式1, 条件式2, ・・・
Sub Sample2()
    '英語の曜日が平日か休日か表示
    
    Dim strDay As String
    strDay = "Sat"
    
    Select Case strDay
        Case "Mon", "Tue", "Wed", "Thu", "Fri"
            MsgBox "平日です"
        Case "Sat", "Sun"
            MsgBox "休日です"
        Case Else
            MsgBox "正しい曜日にしてください。"
    End Select
End Sub

例えば、このようにカンマ区切りをすると平日か休日かを分岐させる処理が書けます。

Caseで範囲指定する方法

「数値または文字列」で数値を書いたときは、条件を範囲指定することができます。

Case 下限値 To 上限値

その場合、Caseの後にToを使って下限値と上限値を記載します。

Sub Sample3()
    
    Dim age As Long
    age = 10
    
    Select Case age
        Case 0 To 9
            MsgBox "子供です"
        Case 10 To 19
            MsgBox "10代です"
        Case 20 To 29
            MsgBox "20代です"
        Case Else
            MsgBox "その他です"
    End Select
End Sub

範囲指定するコードはこのように使います。

Caseの後ろにToを使用することで、数値が一致する範囲で処理分岐させることができます。

不等号で範囲指定する方法(Is)

Sub Sample4()
    
    Dim age As Long
    age = 100
    
    Select Case age
        Case Is < 10
            MsgBox "子供です"
        Case 10 To 19
            MsgBox "10代です"
        Case 20 To 29
            MsgBox "20代です"
        Case Is > 29
            MsgBox "30代以上です"
    End Select
End Sub

範囲は不等号で指定することもできます。

不等号で指定するときにはIsを使います。

Isの部分が数値(ここではage)であり、Isが小さいか大きいかといった判定ができます。

Select Caseのおすすめの使い方

Select CaseはMsgboxの返り値を処理するのにとても便利です。

こちらの記事も合わせてご覧ください。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/12/02 20:25:22時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい