If文をたくさん使うと読みづらいよね
なんか良い方法ないのかな?
If文は便利ですが、使いすぎてコードが読みづらくなっていませんか?
そんな時に「Select Case」文を使うと簡単で見やすいコードが書けるようになります。
初心者の方にも分かりやすいように図を使って、Select Case文の書き方からIf文とSelect Case文の使い分けの方法もあわせて解説していきます。
Select Caseとは
「Select Case」文は「If」文と同じ条件分岐のステートメントとなります。
とくに「Select Case」文は複数の条件分岐のときに使いやすいステートメントです。
ステートメントとはVBAでマクロを制御するときに使う「構文」を指す。
例:「If~Then」「Select Case」「For~Next」「Dim」など
Select Caseの書き方は以下の通りです。
Select Case 比較する変数
Case 比較する条件1
条件1と一致したときの処理
Case 比較する条件2
条件2と一致したときの処理
Case Else
条件から外れたときの処理
End Select
Select Caseの使用例
上記でイメージした天気を例に「Select Case」文を使います。
「tenki」という変数を宣言して、”雨”を代入していきます。
このとき、”雨”か”晴れ”か”それ以外”によって処理が異なるので「比較する変数」はその変数を入れている「tenki」になります。
よって、Select Case tenkiと記述していきます。
そして、Caseの後に「変数の条件」と「一致したときの処理」を書いていきます。
どの条件にも当てはまらないときはCase Elseを用いて処理を書きます。
Sub weather()
Dim tenki
tenki = "雨" 'tenkiという変数に"雨"を代入
Select Case tenki 'tenkiの値によって条件分岐させる
Case "雨" 'tenkiが雨のとき
Debug.Print "傘を差して行こう"
Case "晴れ" 'tenkiが晴れのとき
Debug.Print "日焼け対策をして行こう"
Case Else 'tenkiが雨、晴れでもないとき
Debug.Print "折りたたみ傘を持っていこう"
End Select 'select case終了
End Sub
If文と似ている所もあると思います。
そこで、If文とSelect Case文をどう使い分けたらいいか分からない方のために解説していきます。
If文とSelect Case文の使い分け
以下の基準で使い分けすると分かりやすいと思います。
・Select Case文:「分岐条件の変数が1つ」「分岐が4つ以上」
・IF文:「分岐条件の変数が複数」「分岐が3つまで」
分岐条件の変数
Select Case文では分岐条件の変数は1つしか使用できません。
例えば、「天気を判断する変数」+「温度を判断する変数」の2つを使って分岐させる条件をつくりたいとき、Select Case文はどちらか1つしか使用できませんが、If文では2つ使用可能です。
分岐の数
分岐の数が多いIf文は可読性が低くなります。
そこで、Select Caseを使うと簡単で読みやすいコードになるので、分岐数が4つ以上になるときはSelect Case文をおすすめします。
「If文」と「Select Case」文を比較しても同じ内容を書いているのに「Select Case」文の方が読みやすく感じると思います。
演算子の使い方
Select Case文では比較演算子や一部の論理演算子を使用することもできます。
しかし、If文の使い方とは違うので気を付けるようにしてください。
コメント