EXcel VBA对象被销毁

嗨,我是Excel VBA的新手,所以这可能是显而易见的,如果是的话,我表示歉意。

我在Workbook_Open()实例化了一些全局对象(类),并试图为这些类在各种工作表中调用UDF来编写包装函数。 如果这些函数中的任何一个失败并且没有被捕获的错误,则所有这些全局对象都被设置为空。

为什么会发生这种情况,因为我以为也许只有我操纵的全局对象不会受到影响,除了closures工作簿并重新打开它们以供进一步debugging之外,是否还有其他解决scheme?

实例化很简单

 Private Sub Workbook_Open() Dim i as Integer For i = 0 to nStreams Set gStream(i) = New CStream Next i End Sub 

您可以从Workbook_Open事件中分离出“设置全局variables”代码:

 Private Sub Workbook_Open() SetGlobals End Sub 'in a regular module Public Sub SetGlobals() Dim i as Integer For i = 0 to nStreams Set gStream(i) = New CStream Next i End sub