当我执行我的代码(这需要3-4分钟)。在Excel中执行),当我点击Excel或用户表单中的某些内容时,它会冻结,变白,几乎崩溃……当执行就绪时,一切又恢复正常。
在执行过程中不能在excel中工作当然是正常的,但是如何避免excel的"崩溃"呢?
代码中有循环吗?
如果是,在初始化循环之后添加以下行,它应该有助于解决您的问题!
DoEvents
防止这类问题的最佳方法是对代码进行基准测试,以确定是什么花费了这么长时间。如果您的代码运行时间超过3分钟,那么您几乎肯定有优化的空间。
以下是你需要采取的步骤:
- 在正在执行的代码中设置多个断点。
- 从一个断点到下一个断点所需的时间。
- 一旦你发现了错误,重构。
- 如果你不能提高性能,发布低效的代码并寻求帮助。
要注意的一个臭名昭著的执行缓慢的反模式是在循环中选择东西。
你需要做的是创建一个自定义UserForm,它将覆盖Excel UI,就像一个进度条。您还需要研究强制表单保持在顶部的方法,就像modal form
一样。你不能使用modal form
,因为它们会停止执行
确保没有无限循环使excel无响应后,尝试优化代码。
我发现这是一本关于vba-excel代码优化的非常有趣的书,其中的一些实践实际上对我编写的一个又大又耗时的模块产生了影响。