「あー、ここのIf文分岐が多すぎてごちゃごちゃじゃん。。。」
If文で記述していると条件分岐が増えるに従ってごちゃごちゃしてきますよね!
Select Caseは条件分岐が多い処理に特化しているステートメントです!
早速構文を見てみましょう。
Select Case文の使い方
構文
Select Case ~ End Selectの構文は下記のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub sample() Select Case 条件式 Case 条件1 ~条件式の答えが条件1に合致した時の処理~ Case 条件2 ~条件式の答えが条件2に合致した時の処理~ Case 条件3 ~条件式の答えが条件3に合致した時の処理~ Case Else ~条件式の答えが全ての条件と合致しなかった時の処理~ End Select End Sub |
SelectCase文では「条件式」の結果に対して条件分岐をする事が出来ます。
条件式の部分には変数を記述しても良いですし、計算式を記述する事も出来ます。
文字・日付・数字・オブジェクト等、基本的なデータ型は問題なく使用出来ます。
計算式を条件式にしている場合は、計算結果が条件に合致した場合に処理が実行されます。
変数の場合は変数の値がそのまま使用されます。
条件の色々な記述方法
「9以下はこの処理で、10だけ別の処理にしてー。11から14はこの処理で、あ!15は10と同じ処理にして16以上はこの処理にしたい!!」
なんて意味不明のわがままな条件分岐にも簡単に答えれるのがSelect Case!!
上記の条件を記述したコードがこちら
1 2 3 4 5 6 7 8 9 10 |
Select Case 変数 Case Is <= 9 ~変数が9以下の処理~ Case 10, 15 ~変数が10と15の処理~ Case 11 To 14 ~変数が11から14の処理~ Case Is >= 16 ~変数が16以上の処理~ End Select |
比較演算子には「Is」を使用する。
この「Is」を忘れがちでなんだっけな?となってしまう事がしばしばありますが、Caseの後に
「<= 9」のように記述するとIsを自動補完してくれますので、特に覚える必要はありません。
範囲指定したい場合は「To」を使用する。
例えば12以上80以下を指定する場合は「Case 12 to 80」と記述するだけで指定が出来ます。
条件を複数付けたい時は「 , 」を使う。
複数の条件をまとめて記述する場合は「Case 1 To 4, 7 To 9, 11, 13 」のように条件と条件の間にコンマ「 , 」を記述する事で複数の記述が出来ます。
サンプル
実際にSelectCase文を使用してマクロを作成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub sample() Dim テストの点数 As Integer テストの点数 = 11 Select Case テストの点数 Case Is <= 30 MsgBox "追試!!" Case 31 To 49 MsgBox "頑張れ!!" Case 50 To 70 MsgBox "油断大敵!!!" Case 71 To 99 MsgBox "素晴らしい!!!!" Case 100 MsgBox "もう先生いらない!?" End Select End Sub |
変数に代入されているテストの点数によって、出力するメッセージを変更する事が出来ます。
練習の為に上記のコードを自分で記述してみましょう。
Select Caseは色々な使い方が出来ますので、コレは出来るのかな?といった事を試して見る事をおすすめします!!
If文はSelect Case文でも記述出来る
分岐が多い時にスッキリ記述出来るので重宝するSelect Caseですが、実はIf文の代わりに使用することも出来ます。
If文で記述した条件分岐とSelect Case文で記述した条件分岐を比べて見ましょう。
同じ動作をするコードをIfとSelect Caseで記述してみました。
If文で記述した条件分岐
1 2 3 4 5 6 7 |
If 条件1 Then ~条件式の答えが条件1に合致した時の処理~ ElseIf 条件2 Then ~条件式の答えが条件2に合致した時の処理~ Else ~条件式の答えが全ての条件と合致しなかった時の処理~ End If |
Select Case文で記述した条件分岐
1 2 3 4 5 6 7 8 |
Select Case True Case 条件1 ~条件式の答えが条件1に合致した時の処理~ Case 条件2 ~条件式の答えが条件2に合致した時の処理~ Case Else ~条件式の答えが全ての条件と合致しなかった時の処理~ End Select |
分岐が少ない時はSelect Case文を使うメリットがあまりないように感じますが、
見やすいからという理由でSelectCase文で記述する人もいるようです。
個人的には分岐が4つ以上くらいになってからがSelect Caseの使い所かなと思っています!!
まとめ
適切な場所で使用することでコードを綺麗に見せる事が出来ます。
コードが見やすいと何の動作をするのか理解しやすくなりますし、改修も捗ります!!
読解困難なコードよりもはるかに生産性が高まりますので是非習得しておきましょう。
コメント