【ExcelVBA】条件分岐処理 コードをスッキリ書ける Select Case

こんなあなたにおすすめ

・Excel VBAでSelect Caseによる条件分岐処理を知りたい

・Excel VBAでIf文とSelect Caseの使い分けについて知りたい

Excel VBAを使っていると条件分岐処理が多くなります。

その中でよく使うのは、おそらくIf文の方だと思います。

条件が増えてくるとIf文だとコードが見づらくなっていきます。
そんなときにコードをスッキリ書くことができるのが、Select Case文です。

今回は、Select Case文について解説します。
If文について知りたい方は、下記の記事をご参照ください。
>>【ExcelVBA】If文 条件分岐 超便利 & 簡単

Excel VBAでSelect Caseによる条件分岐処理を知りたい

Select Case 基本構文

基本構文は下記の通りです。

Select Case 値

    Case 条件1
        '条件1を満たしたときの処理
    Case 条件2
        '条件2を満たしたときの処理
    Case 条件3
        '条件3を満たしたときの処理
    Case Else
        '条件1~3を満たせなかった場合の処理

End Select

Select Case Sampleコード

基本構文を理解したところで、早速、Sampleのコードを見ていきましょう。

Sub test1()

    Dim Signal As String
    Signal = "Blue"    '「Blue」を変数に代入する

    Select Case Signal    '基準の値を「Signal」にする
        Case "Blue"    '基準の値「Signal」と同じ場合に処理を実行する
            MsgBox "Go!"    'メッセージボックスを表示する
        Case "Yellow"
            MsgBox "Caution!"
        Case "Red"
            MsgBox "Stop!"
        Case Else    '上記の条件を1つも満たせなかった場合に処理を実行する
            MsgBox "「" & Signal & "」という信号は存在しません。"
    End Select

End Sub

もう一つのSampleコードで、処理が重なっている場合の処理について見ていきましょう。

条件1で0~30、条件2で30~60としていますが、比較する値を30とした場合、条件1の処理が実行されます。
条件2の処理は実行されません。

下図のように条件を1から順に確認していき、条件が満たされたときに処理を実行し、Select Case文を抜けます。

Sub test2()

    Dim Score As String
    Score = 30    '「30」を変数に代入する

    Select Case Score    '基準の値を「Score」にする
        Case 0 To 30      '基準の値「Score」が0~30の場合に処理を実行する
            MsgBox "・・・"    'メッセージボックスを表示する
        Case 30 To 60
            MsgBox "Bad"
        Case 60 To 80
            MsgBox "Good"
        Case Else      '上記の条件を1つも満たせなかった場合に処理を実行する
            MsgBox "Excellent!"
    End Select

End Sub

Excel VBAでIf文とSelect Caseの使い分けについて知りたい

If文とSelect Case文の使い分けは、
  条件分岐が少なければ・・・If文、
  条件分岐が多ければ・・・Select Case文
とするといいと思います。

If文について知りたい方は、下記の記事をご参照ください。
>>【ExcelVBA】If文 条件分岐 超便利 & 簡単

上記のルールは絶対ではありません。

If文は、条件式で比較する値を毎回記述する必要がありますが、Case文は最初に1度設定するだけで済むため、コードがすっきりします。
同じことを複数回入力するということは、記述ミスであったり、変更があったときに変更する箇所が多くなるため大変です。

その時々であった方の処理方法を使うようにしましょう。

下のコードでSelect Case文とIf文のコードを比較していますので、参考にしてください。

Sub test3()

    Dim Signal As String
    Signal = "Blue"    '「Blue」を変数に代入する

    Select Case Signal    '基準の値を「Signal」にする
        Case "Blue"    '基準の値「Signal」と同じ場合に処理を実行する
            MsgBox "Go!"    'メッセージボックスを表示する
        Case "Yellow"
            MsgBox "Caution!"
        Case "Red"
            MsgBox "Stop!"
        Case Else    '上記の条件を1つも満たせなかった場合に処理を実行する
            MsgBox "「" & Signal & "」という信号は存在しません。"
    End Select

End Sub

'-----------------------------------------------------------------------------------------------------

Sub test4()

    Dim Signal As String
    Signal = "Blue"

    If Signal = "Blue" Then
        MsgBox "Go!"
    ElseIf Signal = "Yellow" Then
        MsgBox "Caution!"
    ElseIf Signal = "Red" Then
        MsgBox "Stop!"
    Else
        MsgBox "「" & Signal & "」という信号は存在しません。"
    End If

End Sub

まとめ

ここまで、Select Case文について解説しました。

複数の条件分岐がある場合は、Select Case文で書くとコードがスッキリして見やすいし、変更が容易になります。

If文と合わせて使い分けましょう。

If文による条件分岐処理の方法もあるため、下記の記事をご参照ください。
>>【ExcelVBA】If文 条件分岐 超便利 & 簡単

Excelで作業効率をアップしたい方は、下記の記事もご参照ください。
>>Excelのショートカット一覧 覚えて作業効率アップ!!
>>Excelで覚えておくべき関数 作業効率アップ間違いなし

【Excelについて学びたい方】
Excel 最強の教科書[完全版]
【Excel VBAについて学びたい方】
Excel VBA 脱初心者のための集中講座
エンジニアを目指すなら、TechAcademy!
オンラインスクール受講者数No.1!

・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!

・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!

・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!

・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!

無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です