「Select Case … 場合を選択?」
直訳すれば「場合を選択」となるかと思いますが、プログラミングではどういった意味でつかわれているのでしょうか?
VBAでの具体的な「Select Case」の使い方をご紹介いたします。
条件分岐処理とは
こちらは条件によって次の処理を分けたいときに使います。
おなじ条件分岐処理をおこなう「If ~ Then」でご紹介いたしましたが、ご存じでなければあわせてご確認ください。
Select Caseの使い方
条件分岐が必要なときにつかいます。
指定する条件によって、「実行する」「実行しない」の選択をさせたいときです。
さっそく具体的なコードを使ってご説明します。
こちらが記述したい内容です。
【スタート】マクロの名前:select_case
(条件分岐の開始)もしセルA1が
5以上ならば
セルB1に”★★★★★”を代入する
4以上ならば
セルB1に”★★★★☆”を代入する
3以上ならば
セルB1に”★★★☆☆”を代入する
2以上ならば
セルB1に”★★☆☆☆”を代入する
1以上ならば
セルB1に”★☆☆☆☆”を代入する
どれにも該当しないならば
メッセージの表示 ”セルA1に「1~5以上」を入力してください。”
(条件分岐の終了)
【ゴール】こちらがコードの内容です。
Sub select_case()
Select Case Range("A1").Value
Case Is >= 5
Range("B1").Value = "★★★★★"
Case Is >= 4
Range("B1").Value = "★★★★☆"
Case Is >= 3
Range("B1").Value = "★★★☆☆"
Case Is >= 2
Range("B1").Value = "★★☆☆☆"
Case Is >= 1
Range("B1").Value = "★☆☆☆☆"
Case Else
MsgBox ("セルA1に1~5以上を入力してください。")
End Select
End Subコードのポイントについて解説をします。
Select Case (比較したい対象を記述)
Case Is (対象の条件を記述)
(条件を満たした場合の処理を記述)
Case Else
(どの条件も満たさない場合の処理を記述)
End Select
プログラムは「上から順番に実行」されるため数値で条件設定をする場合は、「降順」もしくは「昇順」で指定しましょう。
比較|「If ~ Then」と「Select Case」
では、どうして「If ~ Then」と同じような意味をもつ「Select Case」が用意されているのでしょうか?
それはコードがシンプルで「人間が読みやすいから」です。
条件分岐処理をしたいとき、「If ~ Then」をつかっても同じ結果を得られます。
個人的に条件設定を細かく記述できる「If ~ Then」の方をおススメしています。慣れてきたら「Select Case」もつかってみる!のような感じでいいと思います。
まとめ
条件分岐処理「Select Case」の使い方についてご説明をいたしました。
「If ~ Then」とおなじで条件によって処理を分岐させたいときに使用します。
もし「If ~ Then」とどちらを優先すればいいかお悩みであれば、「Select Case」よりも「If ~ Then」から慣れていただいた方が良いかと思います。