VBAのSelect Case文で範囲を指定する応用テクニック

VBAの Select Case 文は、特定の値ごとに異なる処理を実行するのに便利ですが、範囲を指定することでより柔軟な条件分岐が可能 になります。本記事では、範囲を指定する Select Case 文の応用テクニックを紹介します。


1. Select Caseで範囲を指定する基本

Select Case 文では、Case の後に 数値の範囲 を指定できます。

(1) 範囲指定の基本

Select Case 評価対象
Case 最小値 To 最大値
'条件に一致したときの処理
End Select

ポイント

  • Case 10 To 20 のように To を使うと、10以上20以下の範囲を指定できる
  • To の範囲は「以上・以下」(10 <= x <= 20)
  • Case Else を使えば、範囲外の値に対する処理も可能

2. 数値の範囲を使った応用例

(1) 成績評価の自動判定

例えば、テストの点数に応じて成績を判定する場合:

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

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

ポイント

  • Case 90 To 100 で 90点以上100点以下 を指定
  • Case Is < 60 で 60未満 を指定(Is を使う)
  • Case Else で 無効な値(0未満や100超え) に対応

3. 複数条件を組み合わせる

(1) 数値の範囲 + 特定の値

Sub CheckScoreAdvanced()
Dim score As Integer
score = Range("A1").Value

Select Case score
Case 100
MsgBox "満点!素晴らしい!"
Case 90 To 99
MsgBox "評価: A"
Case 80, 85 To 89
MsgBox "評価: B(80点か85〜89点)"
Case 70 To 79
MsgBox "評価: C"
Case Else
MsgBox "その他の点数"
End Select
End Sub

ポイント

  • Case 100 で 特定の値 を指定
  • Case 80, 85 To 89 のように、個別の値と範囲を組み合わせ られる

4. 文字列の範囲を使った応用

(1) アルファベットの範囲を判定

Sub CheckAlphabet()
Dim letter As String
letter = LCase(Range("A1").Value) '小文字に変換

Select Case letter
Case "a" To "m"
MsgBox "前半のアルファベット"
Case "n" To "z"
MsgBox "後半のアルファベット"
Case Else
MsgBox "アルファベット以外の文字"
End Select
End Sub

ポイント

  • 文字列の比較も To が使える
  • "a" To "m" で A〜Mの範囲"n" To "z" で N〜Zの範囲 を指定
  • LCase() を使うことで 大文字・小文字の区別をなくす

5. 日付の範囲を判定

(1) 日付の範囲を使った処理

Sub CheckDate()
Dim checkDate As Date
checkDate = Range("A1").Value

Select Case checkDate
Case #2025/01/01# To #2025/03/31#
MsgBox "第1四半期"
Case #2025/04/01# To #2025/06/30#
MsgBox "第2四半期"
Case #2025/07/01# To #2025/09/30#
MsgBox "第3四半期"
Case #2025/10/01# To #2025/12/31#
MsgBox "第4四半期"
Case Else
MsgBox "日付が範囲外です"
End Select
End Sub

ポイント

  • #日付# の形式で範囲を指定できる
  • Case #2025/01/01# To #2025/03/31# で 特定の期間 を判定

6. ToとIsを組み合わせる

Case Is を使うことで、より複雑な条件を指定できます。

(1) 数値の範囲 + より大きい・小さいを組み合わせる

Sub CheckComplexRange()
Dim num As Integer
num = Range("A1").Value

Select Case num
Case Is < 0
MsgBox "負の数"
Case 0
MsgBox "ゼロ"
Case 1 To 50
MsgBox "1から50の範囲"
Case Is > 50
MsgBox "50より大きい"
Case Else
MsgBox "不明な値"
End Select
End Sub

ポイント

  • Case Is < 0 で 0未満 の値を判定
  • Case 1 To 50 で 1〜50の範囲
  • Case Is > 50 で 50より大きい数

7. まとめ

応用テクニック使い方のポイント
数値の範囲Case 10 To 20 で10以上20以下を指定
複数条件の組み合わせCase 80, 85 To 89 のように指定可能
文字列の範囲"a" To "m" のようにアルファベットの範囲を指定
日付の範囲Case #2025/01/01# To #2025/03/31# で特定の期間を指定
Isとの併用Case Is < 0 や Case Is > 50 で範囲外の値を指定

Select Case 文を活用すると、可読性を保ちながら範囲を指定した条件分岐 を記述できます。ぜひ、実際のVBAプログラムに応用してみてください!

コメント

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