【问题标题】:VBA: Is it possible to make objects that were declared and instantiated in a single line "Nothing"?VBA:是否可以在单行“Nothing”中声明和实例化对象?
【发布时间】:2012-06-29 13:36:12
【问题描述】:

以下代码在一行中声明并实例化一个对象,然后尝试将其设置为 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 自学成才,并不太懂这门语言……与我常用的语言相比,这很奇怪……

【问题讨论】:

  • 请参阅此处cpearson.com/excel/DeclaringVariables.aspx 关于“自动实例化”变量的注释
  • 隐式类型转换和自动初始化具有微妙的后果,对调试来说是可怕的。 C 派生语言之所以流行,正是因为它们试图提供帮助。

标签: vba


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    相关资源
    最近更新 更多