こんにちはmasalifeです。
今回は条件分岐の処理に使用するSelect Caseステートメントを紹介します。
条件分岐といえばIfステートメントを思い浮かべる方が多いと思いますが、
IfステートメントよりSelect Caseステートメントを使用したほうがコードがスマートになります。
Select Caseステートメントの構文
【構文】
条件式には数値式、文字列式を記述します。
まとめると次のようになります。
条件 | 記述方法 | POINT |
---|---|---|
100なら | Case 100 | Caseの後に条件を記述する |
1以上なら | Case Is >=1 | 比較演算子を用いる場合はCase Isと記述する |
1以上100以下なら | Case 1 To 100 | 〇以上▲以下とする場合はCase 〇 To ▲と記述する |
1または100なら | Case 1, 100 | 条件が複数ある場合は , (カンマ)で区切って記述する |
masalifeなら | Case “masalife” | 文字列式の場合は ” “(ダブルクォーテーション)で囲う |
上記以外にも条件式には変数を用いることもできます。
実際にはユーザーが選択・入力した値を変数に入れて、条件を分岐、処理させる
といった使い方がメインとなるので、次にその一例を紹介します。
・比較演算子を用いる場合のCase Is のIsをIsキーワードと呼ぶ。
・範囲を条件にする場合のCase ToのToをToキーワードと呼ぶ
変数を条件式にした簡単なプログラムを作成する
今日の天気を入力し、天気によって何をするかのメッセージを出すプログラムを作成します。
【作成するプログラム】
今日の天気を選択してボタンをクリックすると、選択した天気に対応するメッセージを出すプログラムを作成します。
メッセージは次のとおりです。
天気 | メッセージ |
---|---|
晴 | 天気がいいので遊園地に行く |
曇 | 今にも雨が降りそうなので水族館に行く |
雨または雪 | 今日は家で映画を観る |
【コードを記述】
「何する?」ボタンのクリック時イベントに以下のコードを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Private Sub btn行動_Click() Dim tenki As String tenki = Me.cmb天気 '選択した天気を代入 Select Case tenki Case "晴" MsgBox "天気がいいので遊園地に行く" Case "曇" MsgBox "今にも雨が降りそうなので水族館に行く" Case "雨", "雪" MsgBox "今日は家で映画を観る" End Select End Sub |
*天気を選択していない場合(Null値)の対応はしていないため、必ず天気を選択してからボタンをクリックしてください。
ユーザーが選択したコンボボックスの値を変数tenkiに代入して、変数tenkiを条件式としています。
コードがすっきりして見やすいのではないでしょうか。
この基本形を覚えてしまえば、様々な状況に対応したプログラムを作成できます。
さいごに
条件分岐が多くなればなるほど、Select Caseの強みが発揮されます。
ぜひ使ってみてください。
ただし、経験からの注意点として、
複数人でシステムを開発している場合は、周りの人たちがSelect Caseを理解しているかを確認してから使用するのがいいと思います。
せっかく書いたコードが、
「分からん。Ifでええやん。」
といった意見で無くならないように・・・
最後まで読んでいただきありがとうございました。