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 のサポートおよびフィードバックを参照してください。