Select Case语句中的多个真实案例

时间:2019-03-29 15:46:54

标签: vba ms-access

我想知道Select Case在遇到第一个表达式为true的表达式后如何继续运行。在下面的示例中,将仅触发消息框“ Z小于9”。我想知道如何继续执行代码,以便在此示例中,在“ Z小于9”之后显示消息框“ Z小于10”

Sub SelectCaseTrying()
    Dim Z As Integer
    Z = 8
Select Case Z
    Case 5 To 9
        MsgBox "Z is less than 9"
    Case Is < 10
        MsgBox "Z is less than 10"
    Case Is > 15
        MsgBox "Z is greater than 15"
    Case Else
        MsgBox "Z is "
    End Select
End Sub

1 个答案:

答案 0 :(得分:2)

  

我想知道Select Case在遇到第一个计算结果为true的表达式后如何继续运行。

您不能拥有它,因为根据语言规范,Case块不会在VBA中“掉线”,因此,如果您有以下情况:

Select Case Z
    Case Is < 15
        MsgBox "less than 15"
    Case Is < 10
        MsgBox "less than 10"
    Case Else
        MsgBox "greater than or equal to 10"
End Select

然后第二个Case就无法进行启发式搜索-像Rubberduck这样的静态代码分析工具(免责声明:我是这个开源项目的贡献者)可以对此进行警告:

Rubberduck code inspections warning about unreachable Case clause

Select...Case视为编写If...ElseIf...ElseIf...ElseIf...ElseIf...块的一种更干净的方法:条件应该全部互斥,并且只有一个分支可以执行。

如果需要运行两个或多个条件块,则不能使用Select...Case,因为这不是If...ElseIf...ElseIf...的作用:如果需要运行两个或多个条件块,则需要两个或更多单独的条件块(If...End If)。