excel vba中全局variables的生命期是多less?
我有一个工作簿,声明一个全局variables,旨在保存一个COM对象。
Global obj As Object
我在Workbook_Open事件中初始化它,如下所示:
Set obj = CreateObject("ComObject.ComObject");
我可以看到它已经创build,当时我可以做一些COM调用。
在我的工作表上,我有一堆看起来像这样的单元格:
=Module.CallToComObject(....)
模块内部我有一个function
Function CallToComObject(...) If obj Is Nothing Then CallToComObject= 0 Else Dim result As Double result = obj.GetCalculatedValue(...) CallToComObject= result End If End Function
我可以看到这些工作,但是在刷新一些表单后,obj对象不再被初始化,即它被设置为Nothing。
有人可以解释我应该寻找什么可以导致这个?
这些都会重置全局variables:
- 使用“结束”
- 未处理的运行时错误
- 编辑代码
- closures包含VB项目的工作簿
这不一定是一个详尽的清单,但…
除了上面提到的Tim 4之外,我还会build议第5点:逐步完成代码(debugging)并在到达结束之前停止。 可能这可能会取代第3点,因为编辑代码似乎不会导致全局variables失去它们的值。