これまで、処理を分岐させる方法としてIF文を紹介してきました。
IF文は条件結果の真偽によって分岐、ElseIfを使う事でさらに追加条件を指定して分岐させることが出来ました。
しかし、分岐パターンが多くなると、ElseIfが乱立してしまいコードの見栄えが悪くなってしまいます。
そんな時に役立つのが「Select Case」文です。
今回は「Select Case」の使い方について紹介していきます。
追記: PropsRoomというスキル情報メディアを運営しています。
こちらでもVBA入門ガイドを扱っています。
https://props-room.com/articles/handbook/vba-guide-1
目次
Select Case文とは?
「Select Case」は、変数を指定して、変数の中身に応じてあらかじめ用意しておいたパターンに処理を分岐させることが出来ます。
このように1つの変数の値でいくつかのパターンを作り、その条件を満たしたパターンの処理を実行させることが出来ます。
IF文でもElseIfを駆使すれば出来ないこともないですが、1つの変数の値によって3つを超えて分岐させる場合Select Case文を使うのが無難です。
Select Case文の書き方
Select Case文は下のように記述します。
「Select Case」の隣に確認したい変数を指定します。
指定された変数の値をもとに、「Case」の隣にある値とそれぞれ照らし合わせていきます。
同じ値があった場合、その下にある処理を実行させます。
ここでは3つのパターンしか記述しませんでしたが「Case」を増やせばもっとパターンを増やすことが出来ます。
最後の「End Select」でSelect Case文の終わりを意味しています。
これはIF文の時と一緒ですね。
Select Caseを実際に使ってみよう
今度は実際にコードを書いて実行してみましょう。
今回は、セルに書かれた番号を読み取ってそれに紐づく干支をメッセージで表示させてみようと思います。
順番は1番が「子」で最後12番が「亥」とします。
コードを作成
下のコードをコピーしてモジュールに貼り付けてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Sub MessageTest() Dim Hensu As String '変数 Hensu = Range("A2").Value '←「A2」セルの値を変数に代入 Select Case Hensu Case "1" MsgBox "子" Case "2" MsgBox "丑" Case "3" MsgBox "寅" Case "4" MsgBox "卯" Case "5" MsgBox "辰" Case "6" MsgBox "巳" Case "7" MsgBox "午" Case "8" MsgBox "未" Case "9" MsgBox "申" Case "10" MsgBox "酉" Case "11" MsgBox "戌" Case "12" MsgBox "亥" End Select End Sub |
このコードでは、「A2」セルに入力された番号を変数「Hensu」に代入し、「Hensu」の値によって表示させる干支の名前をそれぞれCaseでパターン化しています。
マクロを実行してみる
さっそく動かしてみましょう。
動かすと下のようになるかと思います↓
どの条件も満たさなかった場合
Caseで作成したどの条件にも当てはまらなかった場合は「Case Else」を追記することで分岐させることが出来ます。
Caseの条件に比較演算子を使いたい場合
ここまで、変数の値がCaseの隣の値と一致していればという条件で処理を分岐させていましたが、IF文と同じように比較演算子を使って値を比較させることもできます。
例として、テストの点数によって「優」「良」「可」「不可」をメッセージで表示さたい場合、下のようなコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub MessageTest() Dim Hensu As Integer '変数 Hensu = Range("A2").Value '←「A2」セルの値を変数に代入 Select Case Hensu Case Is >= 80 MsgBox "優" Case Is >= 60 MsgBox "良" Case Is >= 50 MsgBox "可" Case Else MsgBox "不可" End Select End Sub |
入力された点数によって、80点以上は「優」60点以上は「良」50点以上は「可」50点より下の点数は「不可」と結果を表示させることが出来ます。
実際に動かしてみるとこんな感じになります↓
まとめ
冒頭でもお話した通り、Select Caseは条件分岐が沢山ある場合に便利な文法です。
IF文でもElseIfを駆使すれば同じことが出来なくはありませんが、1つの変数で3つ以上の条件パターンで分岐がある場合にはSelect Caseを使った方が後から見やすくて良いと思います。
次回は繰り返し処理(ループ処理)について紹介していきます。
■次のページ