Select Case ステートメント

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

構文

Casetestexpression を選択する
[ Caseexpressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]]
End Select

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

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

次の 1 つ以上の形式の区切られたリスト: expressionexpressionToexpressionIscomparisonoperatorexpression

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

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

解説

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

Case Else 句は、その他のどの Case の選択肢にも testexpressionexpressionlist との間に一致するものが見つからない場合に実行する 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 キーワードとは異なります。

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