Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:是否可以在一行中声明和实例化对象;什么都没有;?_Vba - Fatal编程技术网

VBA:是否可以在一行中声明和实例化对象;什么都没有;?

VBA:是否可以在一行中声明和实例化对象;什么都没有;?,vba,Vba,下面的代码在一行中声明并实例化一个对象,然后尝试将其设置为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 (myOb

下面的代码在一行中声明并实例化一个对象,然后尝试将其设置为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
突然间,信息是“真实的”。我已经在一行中声明并实例化了很多对象,这些对象可能不需要做任何事情。有没有办法在不更改所有声明的情况下执行此操作


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

尝试在局部变量窗口中检查引用变量,这应该可以向您解释。如前所述,问题是由于
Dim。。。作为新的…
myObject引用变量被分配给msgbox语句中的对象。如果随后将其设置为nothing,它将再次变为nothing。

请参见此处关于“自动实例化”变量的说明Simplicit类型转换和自动初始化有一些微妙的后果,这些后果对调试非常有害。C派生语言之所以流行,正是因为它们不想提供帮助。