我还没有找到具体到这个问题的答案,所以希望有人可以为我清除它。将变量设置为新对象时VBA对象是否被破坏?
我明白了VBA垃圾收集器使用引用计数,以确定是否不再需要一个对象,并明确取消关联的变量(从而递减引用计数)使用:
Set objectVariable = Nothing
这里是什么我现在正在处理一个电子表格:
Declare Function GetObject Lib "ObjectCreator.dll"() As Object
Public MyObject as Object
Sub MyMethod()
Set MyObject = GetObject()
...do stuff with MyObject...
Set MyObject = GetObject()
...do stuff with my new MyObject...
Set MyObject = GetObject()
...do stuff with my even newer MyObject...
Set MyObject = Nothing
End Sub
我的问题是:所有三个创建的对象是被GC还是只毁掉了最后一个?即当引用变量被设置为另一个对象而不是被设置为Nothing
时,对象的引用计数是否会减少?
如果你确实有一个具有'GetObject'方法的dll,你应该在declare语句中将它别名,这样它就不会隐藏VBA'GetObject'函数。 – Comintern
@Comintern:也许我应该使用不同的名称......不,DLL没有GetObject方法,只是一个返回对象的方法。我只用这个名字来保持这个例子简单。 – zaphodalive