我正在创建一个相当广泛的Excel用户表单,使用我编写的几个自定义类。事情似乎按预期工作,但有时当我关闭表单时,进程似乎仍然在后台运行。
我知道这是因为在关闭所述表单之后,有时CPU核心会保持满负荷运行,当我点击电子表格中的单元格时,公式栏中显示的值会快速闪烁,就像电子表格被反复刷新一样。
我已经尝试在每个类的Class_Terminate函数中插入break和debug语句(或者至少是所有大类),并且它们似乎都解构得很整齐。此外,当我休息一下代码休息时,一切都按预期停止。
那么,是什么给出的?有没有更好的方法来隔离问题?关闭用户表单后,如何找出仍在运行的内容?
答案 0 :(得分:4)
好吧,经过一些激进的评论和取消注释后,似乎我的错误与VBA的析构函数Class_Terminate()有关。
我在“WellCollection”类中有一个“WellReader”类,所以当我终止我的WellCollection类时,它会随之破坏WellReader。但是,如果我为这两个类定义了Class_Terminate(),它会将我的程序抛入循环(字面意思)。只需定义函数就会导致错误,即使其中没有代码也是如此。
(这里a related StackOverflow post对这个问题有所了解。)
所以,虽然我不确定为什么两个析构函数都不起作用,但现在我没有一个。谢谢大家的帮助!