VBAでのSelect Case文の使い方と実践例

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文の使い分け

では、IfSelect 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を積極的に活用してみてください。コードの可読性がぐっと向上し、エラーの発生も抑えられるようになりますよ。

タイトルとURLをコピーしました