VBAのSelect Case文とは? 基本構文と使い方

VBAで条件分岐を行う場合、If…Then…Else文 を使うのが一般的ですが、条件が多くなるとコードが読みにくくなります。そこで役立つのが Select Case文 です。

Select Case文は、複数の条件分岐を簡潔に記述できる構文 であり、特に 特定の値に応じて処理を分ける場合に便利です。本記事では、Select Case文の基本構文と使い方について詳しく解説します。


1. Select Case文の基本構文

VBAのSelect Case文は以下のような構文になります。

Select Case 比較する値
Case 条件1
'条件1に該当する場合の処理
Case 条件2
'条件2に該当する場合の処理
Case 条件3, 条件4
'条件3または条件4に該当する場合の処理
Case Else
'どの条件にも該当しない場合の処理
End Select

ポイント

  • Select Case の後に評価したい変数や値を記述する
  • Case の後に条件値を指定し、それに一致する場合の処理を書く
  • Case Else を使うとどの条件にも当てはまらない場合の処理を記述できる

2. Select Caseの基本的な使い方

(1) 数値の判定

例:1〜3の数値に応じてメッセージを表示する

Sub CheckNumber()
Dim num As Integer
num = Range("A1").Value 'A1の値を取得

Select Case num
Case 1 'numの値が 1 なら中の処理
MsgBox "A1の値は1です"
Case 2 'numの値が 2 なら中の処理
MsgBox "A1の値は2です"
Case 3 'numの値が 3 なら中の処理
MsgBox "A1の値は3です"
Case Else 'numの値が 1,2,3 以外なら中の処理
MsgBox "A1の値は1〜3ではありません"
End Select
End Sub

ポイント

  • Select Case num で変数 num の値をチェック
  • Case 1Case 2Case 3 でそれぞれの数値に応じた処理を実行
  • Case Else で 1〜3以外の値が入力された場合の処理 を記述

(2) 文字列の判定

例:曜日を判定してメッセージを表示する

Sub CheckWeekday()
Dim dayOfWeek As String
dayOfWeek = LCase(Range("A1").Value) 'A1の値を小文字に変換して取得

Select Case dayOfWeek

'dayOfWeekの値 "monday"ら中の処理
Case "monday"
MsgBox "今日は月曜日です"

'dayOfWeekの値 "tuesday"ら中の処理
Case "tuesday"
MsgBox "今日は火曜日です"

'dayOfWeekの値 "wednesday" または "thursday"ら中の処理
Case "wednesday", "thursday"
MsgBox "週の半ばです"

'dayOfWeekの値 "friday"ら中の処理
Case "friday"
MsgBox "今日は金曜日です!"

'dayOfWeekの値 "saturday" または "sunday"ら中の処理
Case "saturday", "sunday"
MsgBox "今日は週末です"

'dayOfWeekの値上記以外なら中の処理
Case Else
MsgBox "正しい曜日を入力してください"
End Select
End Sub

ポイント

  • LCase() を使って 入力を小文字に統一(”Monday” も “monday” に変換される)
  • Case "wednesday", "thursday" のように 複数の値をまとめて処理 できる
  • Case Else で 予期しない入力に対応 可能

(3) 数値の範囲を判定

例:点数に応じて評価を表示する

編集するSub CheckScore()
Dim score As Integer
score = Range("A1").Value 'A1の値を取得

Select Case score
Case 90 To 100 '90~100の間
MsgBox "評価: A"
Case 80 To 89 '80~89の間
MsgBox "評価: B"
Case 70 To 79 '70~79の間
MsgBox "評価: C"
Case 60 To 69 '60~69の間
MsgBox "評価: D"
Case Is < 60 '59以下、Is = score
MsgBox "評価: F(不合格)"
Case Else
MsgBox "無効な点数です"
End Select
End Sub

ポイント

  • Case 90 To 100 のように 範囲指定が可能
  • Case Is < 60 のように 比較演算子を使うことも可能
  • Case Else で 無効な点数への対応ができる

3. If文とSelect Case文の違い

比較項目If文Select Case文
条件の種類数値、文字列、論理式単一の値を比較
可読性条件が増えると複雑に複数の条件を簡潔に記述できる
範囲指定If x >= 90 And x <= 100 ThenCase 90 To 100 で簡潔に書ける
複数条件の指定If x = 1 Or x = 2 ThenCase 1, 2 で書ける
用途条件が複雑な場合特定の値に応じた処理に適している

どちらを使うべき?

  • 単純な条件分岐(Aなら○、Bなら×)⇒ Select Case
  • 複雑な条件(複数の変数を使うなど) ⇒ If...Then...Else

4. まとめ

ポイント説明
Select Caseは、値ごとの分岐に最適特定の値に応じた処理を簡潔に記述できる
複数の値を一括処理可能Case "A", "B", "C" のように記述できる
範囲指定ができるCase 90 To 100 のように書ける
If文との使い分けが重要条件が単純なら Select Case、複雑なら If

VBAの Select Case を活用すると、可読性が向上し、条件分岐のコードをシンプルに記述できます。特に 特定の値ごとに異なる処理を実行する 場面で役立つので、ぜひ活用してみてください!

コメント

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