Excel VBA Select Case分岐(初心者向け20)

スポンサーリンク
くるみこ
くるみこ

今回は分岐処理第2回目 Select Caseステートメントについてです!
条件分岐が複数存在する場合、If…Then…Elseを駆使すれば条件分岐できますが、こちらを利用すると簡単に解消される場合が多いので、しっかり覚えましょう(^^)

楽しみに待っていました。しっかり勉強しま~す(^^)

よろしくお願いしますm(_ _)m

前回のおさらいはこちらの記事です(^^)/ 下のカードをクリックすれば開きます

くるみこ
くるみこ

前回記事でわかったことは
・If…Then…Else ステートメントの使い方がわかりました
ElseIf を使った複数条件の分岐がわかりました
・論理演算子を使って複数の条件を判定して評価できることがわかりました

【この記事でわかること
Select…Case ステートメントの使い方がわかります

スポンサーリンク

Select Case ステートメント

式の値に応じて、複数のステートメントのグループのいずれかを実行します

Select Case ステートメントの構文

Select Case testexpression
  [ Case expressionlist-n [ statements-n ]]
  [ Case Else [ elsestatements ]]
End Select

Select Case ステートメント構文の指定項目の詳細はつぎのとおり

パーツ説明
testexpression必須。 任意の数値式または文字列式です。
expressionlist-nCase がある場合は必須です。

expression
expression Toexpression
Is comparisonoperator expression
の形式の 1 つまたは複数を含む区切りリストです。

To キーワードは値の範囲を指定します。 To キーワードを使用する場合は、
小さい方の値を To の前に置く必要があります。

Is キーワードは比較演算子(Is と Like を除く)と併用して値の範囲を指定
します。 指定していない場合は、Is キーワードが自動的に挿入されます。
statements-n省略可能。 testexpression が expressionlist-n のいずれかの部分と一致
したときに実行される 1 つ以上のステートメントです。
elsestatements省略可能です。 testexpression が Case 句のいずれとも一致しない場合に
実行される、1 つ以上のステートメントです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/select-case-statement

構文の解説

・testexpressionには、評価する数式または文字列式を指定します
・expressionlistには、Case 句を実行するための条件を指定します
・statementsには、実行する1つ以上のステートメントを指定します(省略可能です)

testexpression が Case expressionlist 式のいずれかと一致する場合は、その Case 句の後から次の Case 句まで、最後の句については End Select までのステートメントが実行されます

testexpression が複数の Case 句の expressionlist 式に一致する場合は、最初に一致した句に続くステートメントのみが実行されます

Case Else 句は、その他のどの Case の選択肢にも testexpression と expressionlist との間に一致するものが見つからない場合に実行する elsestatements を示すために使用されます
Case Else は必須ではありませんが、予測できない testexpression の値を処理するために、Select Case ブロック内で使用したほうがよいでしょう

Select Caseサンプルコード(基本)

'Select Caseステートメントの使用例サンプル1
Sub Select_Case_Sample1()
    Dim Number As Long
    Dim CaseString As String
    
    On Error Resume Next    '数字以外が入力された場合0にするため
    Number = InputBox("1~5の整数を入力してください", "Select_Case_TEST") 'NO入力要求
    
    Select Case Number
        Case 0
            CaseString = " は 0 です"
        Case 1
            CaseString = " は 1 です"
        Case 2
            CaseString = " は 2 です"
        Case Else
            CaseString = " は 3 以上です"
    End Select
    MsgBox "入力値 " & Number & CaseString
End Sub

・7行目で、インプットボックスを表示して1~5の整数入力を要求し入力値をNumberに代入
・9行目で、Select Case に変数 Number を充てています
・10行目、最初の Case 0 を評価して一致していれば変数 CaseString に ” は 0 です”を代入
・一致していない場合、次の Case を評価して行き、一致していれば当該Case句を実行します
End Select 後、結果をメッセージボックスで評価値を表示します

To キーワードを使ったSelect Caseサンプルコード

To キーワードで範囲指定したサンプルコードです

'Select Case の To キーワード使用例サンプル
Sub Select_Case_Sample2()
    Dim Number As Long
    Dim CaseString As String
    
    On Error Resume Next    '数字以外が入力された場合0にするため
    Number = InputBox("整数を入力してください", "Select_Case_TEST") 'NO入力要求
    
    Select Case Number
        Case 1 To 10
            CaseString = " は1~10の範囲内です"
        Case 11 To 20
            CaseString = " は11~20の範囲内です"
        Case 21 To 50
            CaseString = " は21~50の範囲内です"
        Case 51 To 100
            CaseString = " は51~100の範囲内です"
        Case Else
            CaseString = " は101以上です"
    End Select
    MsgBox "入力値 " & Number & CaseString
End Sub

・10行目、1 To 10(1~10) を評価して一致していれば変数 CaseString に指定文字列を代入
・一致していない場合、次の Case を評価して行き、一致していれば当該Case句を実行します
End Select 後、結果をメッセージボックスで評価値を表示します

Is キーワードを使ったSelect Caseサンプルコード

'Select Case の Isキーワード使用例サンプル
Sub Select_Case_Sample3()
    Dim Number As Long
    Dim CaseString As String
    
    On Error Resume Next    '数字以外が入力された場合0にするため
    Number = InputBox("整数を入力してください", "Select_Case_TEST") 'NO入力要求
    
    Select Case Number
        Case Is < 10
            CaseString = " は10未満です"
        Case Is < 100
            CaseString = " は100未満です"
        Case Else
            CaseString = " は100以上です"
    End Select
    MsgBox "入力値 " & Number & CaseString
End Sub

・7行目で、インプットボックスを表示して整数の入力を要求し入力値をNumberに代入
・10行目、Case Is < 10(10未満)を評価し、一致していれば変数 CaseString に文字列を代入
・一致していない場合、次の Case を評価して行き、一致していれば当該Case句を実行します
End Select 後、結果をメッセージボックスで評価値を表示します

その他の例

・「文字列の範囲」や「複数の文字列式」を指定することもできます
・次の例の Case は “everything” と完全に等しい文字列、アルファベット順で “nuts” と “soup” の間にある文字列、および変数 TestItem の現在の値と一致します

Case “everything”, “nuts” To “soup”, TestItem

elect Case ステートメントを入れ子に(ネスト)する場合

Select Caseステートメントは入れ子にできます
・入れ子にした場合、各 Select Case ステートメントごとに、対応する End Select ステートメントが必要になります

    Select Case A
        Case 1
            Select Case B    
                Case 4                
                    処理1
                Case 5
                    処理 5
            End Select
        Case 2
            処理2
        Case 3
            処理3
    End Select

スポンサーリンク

まとめ(おわりに)

くるみこ
くるみこ

は~い! Select Caseステートメントの説明はここで終了です!
使い方は理解できましたか? しっかり覚えてくださいね(^^)

はい! よくわかりました(^^)
いろいろ試してみて、しっかり使い方を覚えるようにします(^^ゞ

くるみこ
くるみこ

はい! 条件分岐の方法の幅が広がりましたね。
次回は、GoTo ステートメントの使い方を解説します。楽しみに待っていてね(^^)/

まとめと感想など

・Select Case ステートメントの使い方がわかりました
To キーワード と ls キーワードの使用例がわかりました
・入れ子に(ネスト)する場合の注意点がわかりました

マクロ(VBA)を実行する際は必ずバックアップを取ってから行ってください
・マクロ(VBA)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!


ブログランキングに参加しています(^^)応援よろしくお願いしますm(_ _)m

今後の記事について

今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
当面は「初心者向けマクロVBA」の記事を継続して書いていきます

【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にもご期待ください(^^)/

記事のサンプルファイルをダウンロードできます

今回の記事のサンプルをダウンロードできるようにしています
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください

スポンサーリンク

スポンサーリンク