我正在使用我编写的几个自定义类创建一个相当广泛的 Excel 用户表单。目前事情似乎按预期工作,但有时当我关闭表单时,一个进程似乎仍在后台运行。
我知道这一点是因为在关闭所述表单后,有时 CPU 内核会继续满负荷运行,当我单击电子表格中的一个单元格时,公式栏中显示的值会快速闪烁,就好像电子表格被反复刷新一样。
我尝试在每个类(或至少所有大类)的 Class_Terminate 函数中插入中断和调试语句,它们似乎都可以巧妙地解构。此外,当我在代码中断时休息时,一切都会按预期停止。
那么,什么给了?有没有更好的方法来隔离问题?关闭用户窗体后,如何找出仍在运行的内容?
最佳答案
好吧,在一些激进的评论和取消评论之后,我的错误似乎与 VBA 的析构函数 Class_Terminate() 有关。
我在“WellCollection”类中有一个“WellReader”类,所以当我终止我的 WellCollection 类时,它会连同它一起破坏 WellReader。但是,如果我为这两个类定义了 Class_Terminate(),它会将我的程序抛出一个循环(字面意思)。简单地定义函数会导致错误,即使其中没有代码。
(这里的 a related StackOverflow post 对这个问题有一定的了解。)
所以,虽然我不确定为什么这两个析构函数都不起作用,但现在我将不使用一个。感谢大家的帮助!
关于vba - 为什么我的 Excel VBA 代码在关闭表单后仍然运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14382677/