Select Case ステートメント
式の値に応じて、複数のステートメントのグループのいずれかを実行します。
構文
Casetestexpression を選択する
[ Caseexpressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]]
End Select
Select Case ステートメントの構文には、次の指定項目があります。
指定項目 | 説明 |
---|---|
testexpression | 必須。 任意の数値式または文字列式です。 |
expressionlist-n |
Case がある場合は必須です。 次の 1 つ以上の形式の区切られたリスト: expression、 expressionToexpression、 Iscomparisonoperatorexpression。 Toキーワード (keyword) では、値の範囲を指定します。 To キーワードを使用する場合は、小さい方の値を To の前に置く必要があります。 Is キーワードは比較演算子 (Is と Like を除く) と併用して値の範囲を指定します。 指定していない場合は、Is キーワードが自動的に挿入されます。 |
statements-n | 省略可能。 testexpression が expressionlist-n のいずれかの部分と一致したときに実行される 1 つ以上のステートメントです。 |
elsestatements | 省略可能。 testexpression が Case 句のいずれとも一致しない場合に実行される、1 つ以上のステートメントです。 |
解説
testexpression が Case式リスト式と一致する場合、その Case 句に続くステートメントは、次の Case 句まで、または最後の句の場合は End Select まで実行されます。 その後、End Select の次のステートメントに制御が渡されます。 testexpression が複数の Case 句の expressionlist 式に一致する場合は、最初に一致した句に続くステートメントのみが実行されます。
Case Else 句は、その他のどの Case の選択肢にも testexpression と expressionlist との間に一致するものが見つからない場合に実行する elsestatements を示すために使用されます。 Case Else は必須ではありませんが、予測できない testexpression の値を処理するために、Select Case ブロック内で使用することをお勧めします。 Case式リストが testexpression と一致せず、Case Else ステートメントがない場合は、End Select の後のステートメントで実行が続行されます。
各 Case 句で複数の式または範囲を使用します。 たとえば、次の行は有効です。
Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber
注:
この Is 比較演算子は、Select Case ステートメントで使用される Is キーワードとは異なります。
文字列の範囲や複数の文字列式を指定することもできます。 次の例では、Case は everything
と完全に等しい文字列、アルファベット順で nuts
と soup
の間にある文字列、および TestItem
の現在の値と一致します。
Case "everything", "nuts" To "soup", TestItem
Select Case ステートメントは入れ子にできます。 入れ子にした Select Case ステートメントごとに、対応する End Select ステートメントが必要になります。
例
この例では、Select Case ステートメントを使用して変数の値を評価します。 評価される変数の値が 2 番目の Case 句に含まれているため、その句に関連付けられたステートメントのみが実行されます。
Dim Number
Number = 8 ' Initialize variable.
Select Case Number ' Evaluate Number.
Case 1 To 5 ' Number between 1 and 5, inclusive.
Debug.Print "Between 1 and 5"
' The following is the only Case clause that evaluates to True.
Case 6, 7, 8 ' Number between 6 and 8.
Debug.Print "Between 6 and 8"
Case 9 To 10 ' Number is 9 or 10.
Debug.Print "Greater than 8"
Case Else ' Other values.
Debug.Print "Not between 1 and 10"
End Select
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。