VBA Case 语句中的变量作用域
VBA Variable Scope in a Case Statement
想知道在 Case 语句中使用变量时如何工作。似乎它们是在第一个 Case 中声明的,不管那个 Case 是否相关。
'The following code will throw an error
Select Case team
Case "Philadelphia Eagles"
dim record as String
Case "Dallas Cowboys"
dim record as String
End Select
即使 'team' 不是费城老鹰队,它也声称我已经声明了变量 'record'
我的印象是,如果案例不相关,案例陈述中的任何内容都会被完全跳过。
'The following code works
Select Case team
Case "Philadelphia Eagles"
dim record as String
Case "Dallas Cowboys"
record = "8-8"
End Select
只是想确认我在这里正确理解了 Case 语句。
谢谢!
乔希
变量声明(Dim
语句)在程序开始执行时解析,这就是为什么您的 Dim record
语句没有 "skipped" 在您的示例中结束。
您应该将变量声明放在代码的顶部,就在您启动子例程或函数之后。您不能对同一个变量使用 Dim
两次。如果变量是需要调整大小的数组,则可以使用 ReDim [Preserve]
代替。
Sub Subname()
Dim record as String
Select Case team
Case "Philadelphia Eagles"
record = "16-0"
Case "Dallas Cowboys"
record = "8-8"
End Select
End Sub
想知道在 Case 语句中使用变量时如何工作。似乎它们是在第一个 Case 中声明的,不管那个 Case 是否相关。
'The following code will throw an error
Select Case team
Case "Philadelphia Eagles"
dim record as String
Case "Dallas Cowboys"
dim record as String
End Select
即使 'team' 不是费城老鹰队,它也声称我已经声明了变量 'record'
我的印象是,如果案例不相关,案例陈述中的任何内容都会被完全跳过。
'The following code works
Select Case team
Case "Philadelphia Eagles"
dim record as String
Case "Dallas Cowboys"
record = "8-8"
End Select
只是想确认我在这里正确理解了 Case 语句。
谢谢!
乔希
变量声明(Dim
语句)在程序开始执行时解析,这就是为什么您的 Dim record
语句没有 "skipped" 在您的示例中结束。
您应该将变量声明放在代码的顶部,就在您启动子例程或函数之后。您不能对同一个变量使用 Dim
两次。如果变量是需要调整大小的数组,则可以使用 ReDim [Preserve]
代替。
Sub Subname()
Dim record as String
Select Case team
Case "Philadelphia Eagles"
record = "16-0"
Case "Dallas Cowboys"
record = "8-8"
End Select
End Sub