我想知道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
答案 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这样的静态代码分析工具(免责声明:我是这个开源项目的贡献者)可以对此进行警告:>
将Select...Case
视为编写If...ElseIf...ElseIf...ElseIf...ElseIf...
块的一种更干净的方法:条件应该全部互斥,并且只有一个分支可以执行。
如果需要运行两个或多个条件块,则不能使用Select...Case
,因为这不是If...ElseIf...ElseIf...
的作用:如果需要运行两个或多个条件块,则需要两个或更多单独的条件块(If...End If
)。