Select Case
文は、単一の変数や値を基準にした条件分岐が主な使い方ですが、複数の変数を組み合わせて条件を判定することも可能です。Select Case
文を使用して複数の変数を条件として処理を行う方法について説明します。
目次
Excel VBAでSelect Caseを複数の変数に対応させる方法
Select Case文の仕組み
Select Case
文は、1つの基準値に対して条件を評価し、該当するCase
に対応する処理を実行する構文です。複数の変数を基準にしたい場合、基準値を1つの表現にまとめて判定する必要があります。
複数の変数を結合して判定する方法
複数の変数を1つの基準値にまとめる方法として、以下のようなテクニックが使えます。
【VBA】Select Case文でAnd条件を使用する方法
【使用例: 数値と文字列を結合して基準値を作成】
Sub SelectCaseWithMultipleVariables()
Dim age As Integer
Dim gender As String
age = 25
gender = "Male"
' 年齢と性別を結合して基準値を作成
Select Case True
Case age > 18 And gender = "Male"
MsgBox "成人男性です。"
Case age > 18 And gender = "Female"
MsgBox "成人女性です。"
Case age <= 18 And gender = "Male"
MsgBox "未成年男性です。"
Case Else
MsgBox "未成年女性です。"
End Select
End Sub
【解説】
age
(年齢)とgender
(性別)を組み合わせた論理式で判定します。Select Case True
を使い、各条件をCase
で評価します。- 複数の変数の条件を組み合わせることで、複雑な条件分岐を簡潔に記述できます。
文字列を結合して基準値を作成する
複数の変数を文字列として結合し、その結合結果を基準値として扱う方法もあります。
【使用例: 文字列結合による判定】
Sub SelectCaseWithConcatenatedVariables()
Dim region As String
Dim product As String
region = "North"
product = "Electronics"
' 地域と製品カテゴリを結合して判定
Select Case region & "-" & product
Case "North-Electronics"
MsgBox "北部地域の電子製品です。"
Case "South-Clothing"
MsgBox "南部地域の衣料品です。"
Case Else
MsgBox "該当する条件がありません。"
End Select
End Sub
【解説】
- 変数
region
(地域)とproduct
(製品カテゴリ)を文字列として結合し、基準値として使用します。 Case
で各条件を文字列形式で比較します。- 結合形式を統一することで、複数の変数を簡単に判定できます。
配列やカスタム関数を利用して複数変数を評価する
複数の変数をリスト形式や関数で評価し、Select Case
文で分岐させることも可能です。
【使用例: 配列を使用して判定】
Sub SelectCaseWithArray()
Dim variables(1 To 2) As Variant
variables(1) = 25 ' 年齢
variables(2) = "Male" ' 性別
' 配列の内容で判定
Select Case True
Case variables(1) > 18 And variables(2) = "Male"
MsgBox "成人男性です。"
Case variables(1) > 18 And variables(2) = "Female"
MsgBox "成人女性です。"
Case Else
MsgBox "未成年です。"
End Select
End Sub
【使用例: カスタム関数で条件をまとめて判定】
Sub SelectCaseWithFunction()
Dim age As Integer
Dim gender As String
age = 30
gender = "Female"
' カスタム関数を使用して条件を評価
Select Case EvaluateCondition(age, gender)
Case "AdultMale"
MsgBox "成人男性です。"
Case "AdultFemale"
MsgBox "成人女性です。"
Case "Minor"
MsgBox "未成年です。"
Case Else
MsgBox "条件外です。"
End Select
End Sub
Function EvaluateCondition(age As Integer, gender As String) As String
If age > 18 And gender = "Male" Then
EvaluateCondition = "AdultMale"
ElseIf age > 18 And gender = "Female" Then
EvaluateCondition = "AdultFemale"
Else
EvaluateCondition = "Minor"
End If
End Function
【解説】
- カスタム関数
EvaluateCondition
で複数の変数を評価し、判定結果を文字列として返します。 Select Case
文でこの文字列を基準値として評価します。
注意点とベストプラクティス
- 条件のシンプル化: 複数の変数を扱う場合、条件が複雑になりやすいため、可読性を意識して記述しましょう。
- 一貫性のある基準値: 文字列結合などを使う場合、結合形式を統一することで、条件分岐が明確になります。
- 関数で条件を整理: カスタム関数を使うことで、条件の整理とコードの再利用性が向上します。
まとめ
Excel VBAでSelect Case
文を複数の変数に対応させるには、基準値を1つにまとめる工夫が必要です。論理条件を使う方法、文字列を結合する方法、配列やカスタム関数を利用する方法など、状況に応じて適切な方法を選択できます。これらのテクニックを活用して、柔軟で効率的な条件分岐を実現しましょう。