VBA(Visual Basic for Applications)での条件分岐といえば「If文」がよく使われますが、複数の条件を分かりやすく整理したいときには「Select Case文」が非常に便利です。
この記事では、VBAでの「Case」文の基本的な書き方から、実際の使用例、そしてIf文との違いや使い分けのポイントまで、初心者にも分かりやすく丁寧に解説します。これを読めば、VBAでの条件分岐がよりシンプルに、そして見やすく書けるようになるはずです。
Select Case文とは?VBAにおける基本構文
VBAでのSelect Case
文は、ある変数や式の値に応じて、複数の処理を分岐させるための構文です。If...ElseIf...Else
を使うよりも、条件が多い場合はコードがスッキリします。
基本構文は以下の通りです。
Select Case 変数
Case 値1
' 値1に一致する場合の処理
Case 値2
' 値2に一致する場合の処理
Case Else
' いずれにも一致しない場合の処理
End Select
たとえば、数値によって処理を分けたいときに非常に有効です。
実例で学ぶ:基本的なSelect Case文の使い方
以下は、点数に応じて評価を表示する例です。
Sub 評価判定()
Dim 点数 As Integer
点数 = InputBox("点数を入力してください")
Select Case 点数
Case Is >= 90
MsgBox "評価:A"
Case Is >= 70
MsgBox "評価:B"
Case Is >= 50
MsgBox "評価:C"
Case Else
MsgBox "評価:D"
End Select
End Sub
この例では、入力された点数に応じて評価がA~Dで表示されます。Case Is >= 数値
のように、比較演算子を使うことも可能です。
Caseに複数の値を指定する方法
Case
にはカンマ区切りで複数の値を指定することができます。これにより、同じ処理を複数の値に適用したいときに便利です。
Sub 曜日判定()
Dim 曜日 As String
曜日 = InputBox("曜日を入力してください")
Select Case 曜日
Case "土", "日"
MsgBox "週末です"
Case "月", "火", "水", "木", "金"
MsgBox "平日です"
Case Else
MsgBox "正しい曜日を入力してください"
End Select
End Sub
このように、値を列挙することで、読みやすく整理された条件分岐が可能になります。
Case To構文で範囲指定を簡単に
Case
では「To」を使って範囲を指定することもできます。
Sub 得点評価()
Dim 点数 As Integer
点数 = InputBox("点数を入力してください")
Select Case 点数
Case 90 To 100
MsgBox "評価:A"
Case 70 To 89
MsgBox "評価:B"
Case 50 To 69
MsgBox "評価:C"
Case Else
MsgBox "評価:D"
End Select
End Sub
この方法なら、数値の範囲ごとに評価を分けるような処理が簡単に記述できます。
Case Isを使った比較演算子との組み合わせ
数値や文字列の比較をしたいときには、Is
を使って比較演算子を明示することも可能です。
Select Case 点数
Case Is > 90
MsgBox "優秀です"
Case Is >= 60
MsgBox "合格です"
Case Else
MsgBox "不合格です"
End Select
比較演算子を使えば、より柔軟な条件設定ができます。
If文とSelect Case文の使い分け
では、If
とSelect Case
はどう使い分けるべきでしょうか?
以下のような基準があります。
- 条件が複雑で、ANDやORなどの論理演算を使う → If文
- 条件が単一の変数や値に基づいて分岐 → Select Case
例:Ifが適しているケース
If 気温 > 30 And 湿度 > 70 Then
MsgBox "熱中症に注意"
End If
例:Select Caseが適しているケース
Select Case 天気
Case "晴れ"
MsgBox "洗濯日和"
Case "雨"
MsgBox "傘を忘れずに"
Case "雪"
MsgBox "防寒対策を"
End Select
実務で使える応用例:メニュー選択
例えば、ユーザーにメニューを選んでもらい、その選択に応じた処理をする場合にもSelect Case
は有効です。
Sub メニュー選択()
Dim メニュー As String
メニュー = InputBox("操作を選んでください:1=保存, 2=印刷, 3=終了")
Select Case メニュー
Case "1"
MsgBox "データを保存しました"
Case "2"
MsgBox "印刷を開始します"
Case "3"
MsgBox "プログラムを終了します"
Case Else
MsgBox "正しい選択をしてください"
End Select
End Sub
業務の中でも、こういった選択肢ベースの処理にSelect Case
はとても使いやすいです。
エラー回避のためのポイント
Select Case
では、思わぬ値が入力される可能性も考慮し、必ずCase Else
を入れておくことをおすすめします。
これにより、予期しない値でも落ちずに適切な対応ができます。
まとめ:Select Caseを使いこなして読みやすいコードに
Select Case
は、VBAでのコードをシンプルかつ視認性高く保つための強力なツールです。特に、同じ変数の複数の値によって処理を分ける場合には、If文
よりも明確で管理しやすい構文になります。
ぜひ今回の内容を参考に、実際の業務や学習の中でSelect Case
を積極的に活用してみてください。コードの可読性がぐっと向上し、エラーの発生も抑えられるようになりますよ。