ExcelVBA中的全局变量的生存期是多少?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (49)

我有一个工作簿,它声明了一个全局变量,用于保存COM对象。

Global obj As Object

我在工作簿里把它_这样的公开活动:

Set obj = CreateObject("ComObject.ComObject");

我可以看到它已经创建了,那时我可以对它进行一些COM调用。

我的单子上有一堆细胞,看起来像:

=Module.CallToComObject(....)

在模块中,我有一个函数

Function CallToComObject(...)
   If obj Is Nothing Then
        CallToComObject= 0
    Else
        Dim result As Double
        result = obj.GetCalculatedValue(...)
        CallToComObject= result
    End If
End Function

我可以稍微看到这些工作,但经过几次工作表刷新之后,obj对象不再初始化(即它被设置为空)。

有人能解释一下我应该找什么才能造成这一切吗?

提问于
用户回答回答于

其中任何一个都会重置全局变量:

  1. 使用“结束”
  2. 未处理的运行时错误
  3. 编辑代码
  4. 关闭包含VB项目的工作簿

但这不一定是一份详尽的清单

用户回答回答于

除了上面的4点之外,我还建议第5点:逐步完成代码(调试),并在到达终点之前停止。这可能会取代第3点,因为编辑代码似乎不会导致全局变量失去它们的值。

扫码关注云+社区