複数の条件をSelect Case Trueで整理する
数値の条件とBooleanの条件を組み合わせ、最初に当てはまる処理を選びます。
実行前に確認
- 複数のCaseがTrueになっても、先に書いたCaseだけが実行されます。範囲の狭い条件を先に置きます。
- VBAのAndとOrは短絡評価ではありません。0除算やNothing参照を避ける必要がある条件は、Ifを分けて先に確認してください。
- Excel実機での動作は未確認です。コピーした練習用ブックで試してください。
1サンプルコード
Option Explicit
Sub Example7058()
Dim amount As Long
Dim isMember As Boolean
Dim result As String
amount = 12000
isMember = True
Select Case True
Case amount < 0
result = "金額を確認してください。"
Case isMember And amount >= 10000
result = "会員・1万円以上の特典対象"
Case isMember
result = "会員向けの案内"
Case Else
result = "通常の案内"
End Select
MsgBox result
End Sub図で見る会員かつ1万円以上の条件を選ぶ
イメージ図Caseを上から調べ、最初にTrueになる分岐を実行します。
金額と会員情報
amount = 12000、isMember = True
上から条件を判定
金額が負の条件はFalse。会員 And 10000以上の条件はTrue
特典対象を表示
「会員・1万円以上の特典対象」を表示し、後のCaseは実行しない
複数の条件が当てはまっても最初のCaseだけが実行されます。Andは短絡評価ではありません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。
- 2
セルは使いません。金額amountは12000、会員かどうかのisMemberはTrueです。
- 3
Example7058のSub内にカーソルを置き、F5キーで実行します。
- 4
「会員・1万円以上の特典対象」と表示されます。isMemberをFalseにすると「通常の案内」になります。