条件式の値に従って、複数のステートメント ブロックのいずれかを実行させるフロー制御ステートメントである。
構文
Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]
End Select
Select Case ステートメントの構文は、次の指定項目から構成される。
指定項目 | 内容 |
testexpression | 必ず指定する。任意の数式または文字列式を指定する。 |
expressionlist-n | Case 節がある場合は、必ず指定する。次の形式で指定する。また、複数指定するときは、カンマ
(,) で区切る。 expression expression To expression Is comparisonoperator expression 引数 expression には数式または文字列を、引数 comparisonoperator には比較演算子を指定する。キーワード To は、値の範囲を指定する キーワードである。キーワード To を使って値の範囲を指定するときは、小さい方の値を先 (左側) に指定すること。キーワード Is は、値の範囲を指定するキーワードで、Is 演算子と Like 演算子以外の 比較演算子と共に使われる。キーワード Is は指定しなくても自動的に設定される。 |
statements-n | 省略可能である。引数 testexpression が引数 expressionlist-n のいずれかと一致するとき、一致した引数 statements-n のステートメントが実行される。 |
elsestatements | 省略可能である。引数 testexpression が Case 節のいずれとも一致しないとき、引数 elsestatements のステートメントが実行される。 |
解説
引数 testexpression が Case 節の引数 expressionlist のいずれかの式に一致すると、Case 節の次のステートメントがその次の Case 節まで実行される。Case 節が最後の節の場合は、End Select まで実行される。ブロックの実行が終わると、制御は End Select の次のステートメントに移る。引数 testexpression が複数の Case 節に一致するときは、最初に一致した Case 節に続くステートメントだけが実行される。
Case Else 節を使用して引数 testexpression がどの Case 節の引数 expressionlist にも一致しなかったときに実行する引数 elsestatements を指定する。Case Else ステートメントは必ずしも必要ではないが、予測できない引数 testexpression の値を処理するために、Select Case ブロックに Case Else ステートメントを記述することをお勧めする。どの Case 節の引数 expressionlist も引数 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 ステートメントが必要である。