Excel VBAでSelect Caseの使い方を知りたいときはないでしょうか。
けど、そんな中で悩むことは、
・Excel VBAでSelect CaseとIFを組み合わせる使い方を知りたいがわからない
ですよね。
今回はそんなお悩みを解決する
・Excel VBAでSelect CaseとIFを組み合わせる使い方
についてまとめます!
もくじ
Select Case文の構文
Select Case文の構文について説明をします。
Select Case文は、指定した式や変数の値と一致する条件を探し、該当するコードブロックを実行します。
Case 値1
‘ 値1に一致する場合のコード
Case 値2
‘ 値2に一致する場合のコード
Case Else
‘ いずれの値にも一致しない場合のコード
End Select
VBAでは、複数の条件に応じて異なるアクションを実行するために、「If Then Else」文を使用することが多いですが、
条件が多くなるとIf Then Else文での実装が複雑になりますね。
そのような場合に活用できるのがSelect Case文です。
Select Case文は、上記のように指定した変数の値に応じて異なる処理を行い、条件が多数ある場合にとても便利です。
Select Case文の使用例
では具体的に、Select Case文を使ったコードをみてみましょう。
ある人の年齢によって対応を変える場合を考えてみます。
以下のコードはA1セルの値が18より下だったら未成年、18から69までを成人、70歳以上を高齢者と出力する処理をおこなっています。
Sub 年齢判定()
Dim Age As Integer
Age = Range("A1").Value
Select Case Age
Case 0 To 17
MsgBox "未成年"
Case 18 To 69
MsgBox "成人"
Case Is >= 70
MsgBox "高齢者"
Case Else
MsgBox "年齢が正しく入力されていません"
End Select
End Sub
A1セルの値が2であれば未成年、
20であれば成人、
80であれば高齢者
という形でメッセージボックス上で表示されます。
なお、「Case Else」部分は任意であり、すべての条件を網羅している場合は記述する必要はありません。
Select Case文の条件式
上記の例以外にもSelect Case文の条件式で使えるパターンはいくつかありますので、説明をします。
1. 等しい条件
基本的な条件一致のパターンとなります。
Select Case 変数
Case "リンゴ"
' "リンゴ"の場合
Case "バナナ"
' "バナナ"の場合
Case Else
' 上記以外
End Select
2. 範囲内であるかの条件
データの値がある範囲にあるかどうかを判定するパターンです。
Select Case 変数
Case 1 To 10
' 1 to 10の範囲の場合
Case 11 To 20
' 11 to 20の範囲の場合
Case Else
'上記以外
End Select
3. 複数の値
カンマを使用して複数の値にマッチするか判定するパターンです。
Select Case 変数
Case "リンゴ", "バナナ", "イチゴ"
' "リンゴ", "バナナ", "イチゴ"が該当した場合
Case Else
' 上記以外
End Select
4. 真偽値(Boolean)
ブール値で判定するパターンです。
Select Case 変数
Case True
' 真の場合
Case False
'偽の場合
End Select
上記のような使い方をすることで、複数の条件を簡潔に書くことができます。
ただし、Select Case文では複雑な条件式(例えば、複数の変数を含む比較や関数の結果を使用する条件など)は直接使用することができません。
そのような複雑な条件を表現するためには、If…Then…Else文を使用するか、あらかじめ条件式の結果を変数に格納してからSelect Case文で使用する必要があります。
Select Case文とIf文の組み合わせ
Select Case文とIf文を組み合わせることで、より柔軟な条件分岐を実現できます。
構文としては以下の通りです。
Select Case 式または変数
Case 値1
' 値1に一致する場合のコード
Case 値2
' 値2に一致する場合のコード
Case Else
If 条件 Then
' 条件が真の場合のコード
Else
' 条件が偽の場合のコード
End If
End Select
Select Case文の条件判定を優先して行い、さらに細かい判定を行いたい場合にIf文を使うイメージとなります。
Select Case文とIf文の組み合わせの使用例
Select Case文とIf文の組み合わせの使用例について説明をします。
A1セルが特定の値に一致する場合にはメッセージを表示し、
それ以外の場合にはさらなる条件判定を行い、別のメッセージを表示するコードとなります。
Sub 数値判定()
Dim intNum As Integer
intNum = Range("A1").Value
Select Case intNum
Case 1
MsgBox "A1は1です。"
Case 2
MsgBox "A1は2です。"
Case Else
If intNum > 10 Then
MsgBox "A1は10より大きいです。"
Else
MsgBox "A1は10以下です。"
End If
End Select
End Sub
上記のコードでは、A1セルの値が1の場合と2の場合にはそれぞれメッセージが表示され、
それ以外の場合にはA1セルの値に応じて別の条件分岐が行われます。
さいごに
いかがでしょうか。
今回は、
・Excel VBAでSelect CaseとIFを組み合わせる使い方
についてまとめました。
Select Case文とIf文を組み合わせることで、より複雑な条件分岐を実現できます。
必要に応じて条件式やコードを適切に組み合わせて、プログラムのロジックを制御してください。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す