2

以下代码在一行中声明并实例化一个对象,然后尝试将其设置为 Nothing

Dim myObject As New MyClass
Set myObject = Nothing
MsgBox (myObject Is Nothing) 'FALSE

第三行的消息是“False”。但是,如果我将声明和实例化分成两行,如下所示:

Dim myObject As MyClass
Set myObject = New MyClass
Set myObject = Nothing
MsgBox (myObject Is Nothing) 'TRUE

突然消息是“真实的”。我已经在一行中声明并实例化了很多对象,可能需要将其设为 Nothing。有没有办法在不更改所有声明的情况下做到这一点?

另外,如果有人能解释为什么会这样,我将不胜感激。我是 VBA 自学成才,并不太懂这种语言……与我常用的语言相比,这很奇怪……

4

1 回答 1

2

尝试检查Locals 窗口中的引用变量,这应该向您解释。如前所述,问题是由于Dim ... As New ... myObject引用变量被分配给 msgbox 语句中的对象。如果您之后将其设置为空,它将再次变为空。

于 2012-06-29T05:36:12.223 回答