我想知道如何让Select在遇到第一个计算为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发布于 2019-03-29 16:28:38
我想知道如何让Select在遇到第一个计算为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是不可触及的,而像橡胶鸭这样的静态代码分析工具(免责声明:我是这个开源项目的贡献者)可以对此提出警告:

将Select...Case看作是编写If...ElseIf...ElseIf...ElseIf...ElseIf...块的一种更简洁的方法:所有条件都应该是互斥的,并且只有一个分支可以执行。
如果需要运行两个或多个条件块,则不能使用Select...Case,因为这不是If...ElseIf...ElseIf...所做的:如果需要两个或多个条件块来运行,则需要两个或多个单独的条件块(If...End If)。
https://stackoverflow.com/questions/55421019
复制相似问题