Skip to content

Select Case

根据表达式的值执行若干语句组之一。

语法:

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

testexpression

任意数值表达式或字符串表达式。

expressionlist-n

如果出现Case则为必需。以分隔符分隔的一个或多个以下形式的列表:

  • expression
  • expression To expression
  • Is comparisonoperator expression

To关键字指定值的范围。使用To关键字时,较小的值必须出现在To之前。

使用Is关键字与比较运算符(IsLike除外)来指定值的范围。如果未提供,Is关键字会自动插入。

statements-n

可选 如果testexpression匹配expressionlist-n的任何部分,则执行的一个或多个语句。

elsestatements

可选 如果testexpression不匹配任何Case子句,则执行的一个或多个语句。

如果testexpression匹配任何Case expressionlist表达式,则执行该Case子句之后的statements,直到下一个Case子句,或对于最后一个子句直到End Select。然后控制传递到End Select之后的语句。如果testexpression匹配多个Case子句中的expressionlist表达式,则只执行第一个匹配之后的语句。

Case Else子句用于指示在testexpression与任何其他Case选择中的expressionlist没有匹配时要执行的elsestatements。虽然不是必需的,但在Select Case块中使用Case Else语句处理未预见的testexpression值是一个好习惯。如果没有Case expressionlist匹配testexpression且没有Case Else语句,执行继续到End Select之后的语句。

每个Case子句中可以出现多个表达式或范围。例如,以下行是有效的:

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

INFO

Is比较运算符与Select Case语句中使用的Is关键字不同。

字符串也可以指定范围和多个表达式。在下面的示例中,Case匹配与everything完全相等的字符串、按字母顺序在nutssoup之间的字符串以及TestItem的当前值:

vb
Case "everything", "nuts" To "soup", TestItem

Select Case语句可以嵌套。每个嵌套的Select Case语句必须有匹配的End Select语句。

示例

本示例使用Select Case语句评估变量的值。第二个Case子句包含被评估变量的值,因此只执行与之关联的语句。

vb
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

另请参阅

twinBASIC及其LOGO版权为作者"韦恩"所有