Select Case ステートメント

の値に応じて、複数のステートメントのグループのいずれかを実行します。

構文

Select Case testexpression
[ Case expressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]]
End Select


Select Case ステートメントの構文には、次の指定項目があります。

指定項目 説明
testexpression 必須。 任意の数値式または文字列式です。
expressionlist-n Case がある場合は必須です。

expressionexpressionToexpressionIscomparisonoperator expression の形式の 1 つまたは複数を含む区切りリストです。

To キーワードは値の範囲を指定します。 To キーワードを使用する場合は、小さい方の値を To の前に置く必要があります。

Is キーワードは 比較演算子 (IsLike を除く) と併用して値の範囲を指定します。 指定していない場合は、Is キーワードが自動的に挿入されます。
statements-n 省略可能。 testexpressionexpressionlist-n のいずれかの部分と一致したときに実行される 1 つ以上のステートメントです。
elsestatements 省略可能です。 testexpressionCase 句のいずれとも一致しない場合に実行される、1 つ以上のステートメントです。

解説

testexpressionCase expressionlist 式のいずれかと一致する場合は、その Case 句の後から次の Case 句まで、最後の句については End Select までの ステートメント が実行されます。 その後、End Select の次のステートメントに制御が渡されます。 testexpression が複数の Case 句の expressionlist 式に一致する場合は、最初に一致した句に続くステートメントのみが実行されます。

Case Else 句は、その他のどの Case の選択肢にも testexpressionexpressionlist との間に一致するものが見つからない場合に実行する elsestatements を示すために使用されます。 Case Else は必須ではありませんが、予測できない testexpression の値を処理するために、Select Case ブロック内で使用することをお勧めします。 Case expressionlist と一致する testexpression がないときに、Case Else ステートメントもない場合は、End Select の後のステートメントから実行が続行されます。

それぞれの Case 句に複数の式または範囲を使用できます。 たとえば、次の行は有効です。

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber 

注意

この Is 比較演算子は、Select Case ステートメントで使用される Is キーワードとは異なります。

文字列の範囲や複数の文字列式を指定することもできます。 次の例では、Caseeverything と完全に等しい文字列、アルファベット順で nutssoup の間にある文字列、および 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 のサポートおよびフィードバックを参照してください。