Excel VBA - 删除工作表会在对象浏览器中留下虚拟工作表对象

问题描述 投票:0回答:1

因此,我使用宏来自动执行大型数据集上繁琐的数据操作过程。 作为此过程的一部分,我采用一个预先存在的计算表(假设为“输出”),并创建一个名为“Output_Final”的新表,其中将包含更新的数据。

我检查“Output Final”是否存在,如果存在,我删除并重新创建它。 这在物理替换实际纸张方面效果很好。 然而,在对象浏览器中,我看到一堆幻影 Sheet 对象(对垃圾图片质量表示歉意): (https://i.sstatic.net/rhvabwkZ.png)

尽管工作表名称已参数化,但我正在使用以下方法删除工作表: ActiveWorkbook.Sheets("Output_Final").Delete

我遗漏了一些明显的东西吗? 我仍在开发这个解决方案,因此将会有更多的测试运行要做,并且用户会频繁地重新运行,所以我真的不希望数百个幻像对象闲逛。 除此之外,每次生成的初始默认工作表名称都会递增,我不知道是否有限制。

excel vba
1个回答
0
投票

如果对象没有从内存中完全释放,就会发生这种情况。删除工作表后,显式将工作表对象设置为 Nothing 以将其从内存中释放:

Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets("Output_Final")
ws.Delete
Set ws = Nothing
© www.soinside.com 2019 - 2024. All rights reserved.