Select Case ステートメント

条件式の値に従って、複数のステートメント ブロックのいずれかを実行させるフロー制御ステートメントです。

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

引数

  • testexpression
    任意の数式または文字列式を指定します。
  • expressionlist-n
    Case 節を記述する場合は必ず指定します。1 つ以上の式をカンマ (,) で区切って指定します。
  • statements-n
    testexpression が expressionlist-n のいずれかと一致するとき、一致した statements-n のステートメントが実行されます。
  • elsestatements-n
    testexpression が Case 節のいずれとも一致しないとき、elsestatements-n のステートメントが実行されます。

解説

testexpression が Case 節のいずれかの式 expressionlist に一致すると、次の Case 節または End Select ステートメントまでの引数 statements が実行されます。ブロックの実行が終わると、制御は End Select ステートメントの次のステートメントに移ります。testexpression が複数の Case 節に一致するときは、最初に一致した Case 節に続くステートメントだけが実行されます。

Case Else 節は、testexpression がどの Case 節の expressionlist にも一致しなかったときに実行するステートメント elsestatements を指定します。Case Else ステートメントは必ずしも必要ではありませんが、予測できない testexpression の値を処理するために、Select Case ブロックに Case Else ステートメントを記述することをお勧めします。Case 節の式 expressionlisttestexpression と一致しない場合で Case Else ステートメントが指定されていないときは、End Select ステートメントの次のステートメントから実行が続けられます。

Select Case ステートメントは、ネスト (入れ子) 構造にすることができます。このとき、各 Select Case ステートメントには、それぞれ対応する End Select ステートメントが必要です。

次のコードは、Select Case ステートメントの使用例です。

Dim Color, MyVar
Sub ChangeBackground (Color)
   MyVar = lcase (Color)
   Select Case MyVar
      Case "red"     document.bgColor = "red"
      Case "green"   document.bgColor = "green"
      Case "blue"    document.bgColor = "blue"
      Case Else      MsgBox "他の色を選んでください。
   End Select
End Sub

必要条件

バージョン 1

参照

If...Then...Else ステートメント