Excel VBAのSelect Case
文は、単一の基準に対して複数の条件を簡潔に記述するための構文ですが、状況によっては複数の条件を組み合わせて処理を行いたい場合もあります。Select Case
文を使って複数条件を設定する方法ついて説明します。
目次
Excel VBAでSelect Caseを使用して複数の条件を設定する方法
Select Case文の基本構文と複数条件の設定
Select Case
文の基本構文では、単一の基準に対して複数の値や範囲を設定して処理を分岐させることができます。複数条件は、カンマ(,
)で区切ることで一度に設定することが可能です。【VBA】Select Caseで文字列を処理する方法
Select Case 変数
Case 条件1, 条件2, 条件3
' 条件1、条件2、条件3に一致する場合の処理
Case 条件4 To 条件5
' 条件4から条件5の範囲に一致する場合の処理
Case Else
' その他の場合の処理
End Select
複数の固定値を条件にしたSelect Case
複数の固定値に一致する場合に同じ処理を行いたい場合、条件をカンマで区切って記述します。
【使用例: 複数の固定値に一致する場合の処理】
Sub MultipleFixedValues()
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
変数day
が"Saturday"
または"Sunday"
の場合に「週末です。」というメッセージを表示し、平日("Monday"
から "Friday"
)の場合は「平日です。」と表示します。カンマで複数の条件を指定することで、複数の値に対して同じ処理をまとめて行うことができます。
範囲を指定して条件を設定する
Select Case
では、範囲条件を指定することも可能です。範囲は、Case 条件1 To 条件2
のようにTo
を使って記述します。
【使用例: 数値の範囲に基づいた条件】
Sub RangeValues()
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
の値に応じてメッセージを表示します。例えば、score
が85の場合、「成績は良好です。」と表示されます。範囲を指定することで、数値に基づいた条件分岐が簡単に設定できます。
複数条件の組み合わせ
Select Case
文では、複数の条件をカンマで区切るだけでなく、範囲条件と個別条件を組み合わせて設定することも可能です。
【使用例: 範囲と特定の値を組み合わせた条件】
Sub MixedConditions()
Dim age As Integer
age = 20
Select Case age
Case 0 To 12
MsgBox "子供料金です。"
Case 13 To 19, 25
MsgBox "学生料金です。"
Case 20 To 64
MsgBox "大人料金です。"
Case Else
MsgBox "シニア料金です。"
End Select
End Sub
age
が0から12の範囲にあれば「子供料金」、13から19または25であれば「学生料金」、20から64であれば「大人料金」と表示します。このように、範囲指定と固定値を組み合わせることができます。
Isを使った条件指定
Is
を使って、<
(小なり)、>
(大なり)、<=
(以下)、>=
(以上)などの比較を行うことも可能です。
【使用例: 比較演算を使った条件】
Sub UsingIsForConditions()
Dim temperature As Integer
temperature = 35
Select Case temperature
Case Is > 30
MsgBox "とても暑いです。"
Case Is >= 20
MsgBox "暖かいです。"
Case Is >= 10
MsgBox "少し寒いです。"
Case Else
MsgBox "とても寒いです。"
End Select
End Sub
temperature
が30以上であれば「とても暑いです。」、20以上であれば「暖かいです。」と表示します。このように、Is
を使うことで、複雑な比較を条件に含めることができます。
複数の基準に基づいたSelect Caseの活用
Select Case
は、単一の基準に対して条件を設定するための構文ですが、入れ子構造を使うことで複数の基準に基づいて処理を行うことも可能です。
使用例: 入れ子構造で複数の基準を組み合わせた条件
例えば、製品カテゴリーと販売地域によって異なるメッセージを表示するコードです。
Sub NestedSelectCaseExample()
Dim category As String
Dim region As String
category = "Electronics"
region = "North"
Select Case category
Case "Electronics"
Select Case region
Case "North"
MsgBox "北部地域で電子製品が販売されました。"
Case "South"
MsgBox "南部地域で電子製品が販売されました。"
Case Else
MsgBox "他の地域で電子製品が販売されました。"
End Select
Case "Clothing"
Select Case region
Case "North"
MsgBox "北部地域で衣料品が販売されました。"
Case "South"
MsgBox "南部地域で衣料品が販売されました。"
Case Else
MsgBox "他の地域で衣料品が販売されました。"
End Select
Case Else
MsgBox "カテゴリーが不明です。"
End Select
End Sub
category
とregion
の2つの基準に基づき、それぞれの組み合わせによって異なるメッセージを表示します。Select Case
の入れ子を活用することで、複数の基準を組み合わせた柔軟な条件分岐が可能になります。
まとめ
Excel VBAのSelect Case
文を使うと、単一の基準に対して複数の条件を設定して処理を分岐することができます。複数の値や範囲を組み合わせたり、Is
を使って比較演算を行ったりすることで、より柔軟で読みやすいコードが作成できます。また、入れ子構造を活用すれば、複数の基準に基づいた条件分岐も実現可能です。