Excel VBAでは、Select Case
文を使用することで、複数の条件分岐を効率的に処理できます。If...ElseIf
文と似た機能を持っていますが、特に多くの条件を処理する場合にはコードを簡潔に記述できるため、可読性が向上します。
Select Case
文の基本構文から解説します。
目次
Select Case文の基本構文
Select Case
文では、1つの値を基準に複数の条件を評価し、それに応じた処理を実行します。
【基本構文】
Select Case 評価対象
Case 条件1
' 条件1に一致する場合の処理
Case 条件2
' 条件2に一致する場合の処理
Case 条件3, 条件4
' 条件3または条件4に一致する場合の処理
Case Else
' 上記のいずれの条件にも一致しない場合の処理
End Select
【使用例: 基本的なSelect Case文】
Sub ExampleBasicSelectCase()
Dim value As Integer
value = 3
Select Case value
Case 1
MsgBox "値は1です。"
Case 2
MsgBox "値は2です。"
Case 3
MsgBox "値は3です。"
Case Else
MsgBox "値が1、2、3以外です。"
End Select
End Sub
実行結果:
変数value
の値が3
の場合、「値は3です。」というメッセージが表示されます。
Case Elseの役割
Case Else
は、指定した条件に一致しない場合の処理を記述するためのブロックです。これは、If...ElseIf...Else
のElse
に相当します。
【使用例: Case Else】
Sub ExampleCaseElse()
Dim color As String
color = "Yellow"
Select Case color
Case "Red"
MsgBox "色は赤です。"
Case "Blue"
MsgBox "色は青です。"
Case Else
MsgBox "指定された色以外です。"
End Select
End Sub
複数の条件を1つのCaseにまとめる
1つのCase
ブロックで複数の条件をまとめることができます。条件をカンマ(,
)で区切ることで実現します。
【使用例: 複数の条件をまとめる】
Sub ExampleMultipleConditions()
Dim day As String
day = "Saturday"
Select Case day
Case "Saturday", "Sunday"
MsgBox "週末です。"
Case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"
MsgBox "平日です。"
Case Else
MsgBox "不明な日です。"
End Select
End Sub
範囲を使った条件分岐
Case
に範囲を指定することも可能です。
【使用例: 範囲指定】
Sub ExampleRangeCase()
Dim score As Integer
score = 85
Select Case score
Case 90 To 100
MsgBox "成績: 優"
Case 70 To 89
MsgBox "成績: 良"
Case 50 To 69
MsgBox "成績: 可"
Case Else
MsgBox "成績: 不可"
End Select
End Sub
実行結果:
score
が85
の場合、「成績: 良」と表示されます。
論理式を使用する方法
Select Case
文では、条件に論理式を使用することも可能です。評価対象をTrue
に設定し、各Case
ブロック内で論理式を評価します。
【使用例: 論理式を使用】
Sub ExampleLogicalCase()
Dim age As Integer
age = 25
Select Case True
Case age < 18
MsgBox "未成年です。"
Case age >= 18 And age < 65
MsgBox "成人です。"
Case age >= 65
MsgBox "高齢者です。"
End Select
End Sub
セルの値に基づく処理
セルの値に基づいて、異なる処理を実行する例です。
Sub ExampleCellValue()
Dim value As Variant
value = Range("A1").Value ' セルA1の値を取得
Select Case value
Case Is > 100
MsgBox "値は100より大きいです。"
Case 50 To 100
MsgBox "値は50以上100以下です。"
Case Is < 50
MsgBox "値は50より小さいです。"
Case Else
MsgBox "値が不明です。"
End Select
End Sub
条件に応じてフォーマットを変更
セルの値に応じてフォーマットを変更する例です。
Sub ExampleConditionalFormatting()
Dim cell As Range
For Each cell In Range("A1:A10")
Select Case cell.Value
Case Is > 100
cell.Interior.Color = RGB(255, 0, 0) ' 背景色を赤に設定
Case 50 To 100
cell.Interior.Color = RGB(255, 255, 0) ' 背景色を黄色に設定
Case Is < 50
cell.Interior.Color = RGB(0, 255, 0) ' 背景色を緑に設定
Case Else
cell.Interior.ColorIndex = xlNone ' 背景色をクリア
End Select
Next cell
End Sub
注意点とベストプラクティス
Case Else
を必ず記述する:Case Else
を記述することで、予期しない値に対する処理をカバーできます。
- 条件の順序に注意:
- 条件は上から順に評価されます。範囲や値が重なる場合、期待通りの結果にならない可能性があります。
- 可読性を意識する:
- 条件が多くなる場合、コメントを付けたり、適切に改行して可読性を高めましょう。
まとめ
Excel VBAのSelect Case
文を使うことで、複数の条件分岐を簡潔かつ効率的に記述できます。基本的な使い方から応用例まで、Select Case
文は幅広い場面で活用できる便利な構文です。