gpt4 book ai didi

excel - 如何销毁一个物体

转载 作者:行者123 更新时间:2023-12-01 17:37:24 25 4
gpt4 key购买 nike

看来 Set Object = Nothing 并没有破坏此代码中的 Fs 对象:

Sub Test2()
Dim Fs As New FileSystemObject
Set Fs = Nothing
MsgBox Fs.Drives.Count ' this line works
End Sub

最后一行没有错误!这意味着 Fs 对象仍然存在,对吗?

那么如何销毁这个Fs对象。

最佳答案

确保正确销毁对象的另一种方法是生成对 With block 的对象引用(即不声明局部变量):

Sub Test()
With New FileSystemObject
MsgBox .Drives.Count
End With
End Sub

该对象仅存在于 With block 内,当执行到达 End With 标记时,如果您使用自定义类模块尝试它,您会注意到类的 Class_Terminate 处理程序运行,有效地确认对象已正确销毁。

至于As New怪癖,as was already explained ,如果您打算将对象引用设置为该范围内的 Nothing,请不要使用 As New 声明它,因为 VBA 设置对 Nothing 的对象引用,但一旦您再次重新引用它,它也会愉快地(“有帮助地”)为您创建一个新实例,只是为了验证该对象 Is Nothing .

旁注,这种(烦人的)反直觉行为正是 Rubberduck 推理背后的原因。的对象变量是自分配的代码检查:

RD website's inspection results

(注意:如果您有想要检查的代码,请知道它在实际 VBE 中的运行速度比在网站上快得多)

(如果还不清楚的话:我积极参与了 Rubberduck 项目)

关于excel - 如何销毁一个物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42164719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com