← コード一覧へ戻る
実務条件分岐

複数の条件を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になる分岐を実行します。

  1. 金額と会員情報

    amount = 12000、isMember = True

  2. 上から条件を判定

    金額が負の条件はFalse。会員 And 10000以上の条件はTrue

  3. 特典対象を表示

    「会員・1万円以上の特典対象」を表示し、後のCaseは実行しない

複数の条件が当てはまっても最初のCaseだけが実行されます。Andは短絡評価ではありません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。

  2. 2

    セルは使いません。金額amountは12000、会員かどうかのisMemberはTrueです。

  3. 3

    Example7058のSub内にカーソルを置き、F5キーで実行します。

  4. 4

    「会員・1万円以上の特典対象」と表示されます。isMemberをFalseにすると「通常の案内」になります。

使っている機能の公式ドキュメント(Microsoft Learn)