关闭表单后,为什么我的Excel VBA代码仍然运行?

时间:2013-01-17 15:41:34

标签: vba excel-vba excel-2007 excel

我正在创建一个相当广泛的Excel用户表单,使用我编写的几个自定义类。事情似乎按预期工作,但有时当我关闭表单时,进程似乎仍然在后台运行。

我知道这是因为在关闭所述表单之后,有时CPU核心会保持满负荷运行,当我点击电子表格中的单元格时,公式栏中显示的值会快速闪烁,就像电子表格被反复刷新一样。

我已经尝试在每个类的Class_Terminate函数中插入break和debug语句(或者至少是所有大类),并且它们似乎都解构得很整齐。此外,当我休息一下代码休息时,一切都按预期停止。

那么,是什么给出的?有没有更好的方法来隔离问题?关闭用户表单后,如何找出仍在运行的内容?

1 个答案:

答案 0 :(得分:4)

好吧,经过一些激进的评论和取消注释后,似乎我的错误与VBA的析构函数Class_Terminate()有关。

我在“WellCollection”类中有一个“WellReader”类,所以当我终止我的WellCollection类时,它会随之破坏WellReader。但是,如果我为这两个类定义了Class_Terminate(),它会将我的程序抛入循环(字面意思)。只需定义函数就会导致错误,即使其中没​​有代码也是如此。

(这里a related StackOverflow post对这个问题有所了解。)

所以,虽然我不确定为什么两个析构函数都不起作用,但现在我没有一个。谢谢大家的帮助!