我有一个工作簿,声明一个旨在保存COM对象的全局变量.
Global obj As Object
Run Code Online (Sandbox Code Playgroud)
我在Workbook_Open事件中初始化它,如下所示:
Set obj = CreateObject("ComObject.ComObject");
Run Code Online (Sandbox Code Playgroud)
我可以看到它已创建,那时我可以对它进行一些COM调用.
在我的工作表上,我有一堆看起来像的单元格:
=Module.CallToComObject(....)
Run Code Online (Sandbox Code Playgroud)
在模块内部,我有一个功能
Function CallToComObject(...)
If obj Is Nothing Then
CallToComObject= 0
Else
Dim result As Double
result = obj.GetCalculatedValue(...)
CallToComObject= result
End If
End Function
Run Code Online (Sandbox Code Playgroud)
我可以看到这些工作有点,但在几张表刷新后,obj对象不再被初始化,即它被设置为Nothing.
有人可以解释一下我应该寻找什么导致这种情况吗?
我有几个模块引用的公共变量.我知道如果你调试或点击停止变量被清除.我一直把这些变量写到电子表格中,所以如果它们被清除,我会把它们弄清楚,但这很麻烦.我宁愿让它全部存储它代码.是否有任何替代公共变量永远不会被清除?