こんなあなたにおすすめ
・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で覚えておくべき関数 作業効率アップ間違いなし
オンラインスクール受講者数No.1!
・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!
・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!
・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!
・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!
無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら