当宏完成时,数组变量值是否仍然存在?我已经声明了一个全局变量:
Option Explicit
Public Arr2D As Variant
Public Sub ReadDataToArr()
Arr2D = [MyNamedRange].Value
End Sub
但是一旦宏完成,那么Arr2D
就会脱离背景而Arr2D
会变空。我想在工作簿打开时读取所有数组变量的数据,并在我想要的任何场合使用它们,而不是每次都声明和填充它们。
更新。为什么我认为它是空的?添加一个关于Arr2D
变量的监视。
再次更新。我注意到一些奇怪的东西。当我在调试模式下第二次运行上面的宏时(在初始化值之后,在变量离开上下文之后),然后立即在宏的第一行,变量变为“填充”值,并在上下文中。所以也许这就是为什么在评论中引起分歧的原因。
Option Explicit
Public test As Variant
Sub a()
test = 5
End Sub
Sub b()
MsgBox test
End Sub
首先运行a
然后运行b
它将按预期输出5
。
变量test
将持续存在,直到你运行End
或按下VBE中的stop
按钮。
请注意,如果您的变量test
已初始化,则应在每个过程中进行测试。
例如
Option Explicit
Public Arr2D As Variant
Sub InitArr2D()
Arr2D = [MyNamedRange].Value
End Sub
Sub ProcedureUsingArr2D()
If Arr2D Is Nothing Then
InitArr2D
End If
Debug.Print Join(WorksheetFunction.Transpose(Arr2D), ",")
End Sub
如果你没有测试你的变量可能是Nothing
发生运行时错误后你按下End
。这样它就会自动重新初始化。