我有一个工作簿,其中包含三个模块,总共有大约19,000行代码。
我添加了多个按钮来运行子程序,这些子程序运行得很好。
我添加了四个新的子例程(都很短,可能总共200行)来复制/粘贴数据和构建图形。
一旦我添加了这些子例程,所有其他的子例程就开始异常缓慢地运行(从5-10秒到几分钟,一些Excel完全冻结)。
我有一个解决方法的想法(每次运行例程时关闭和打开自动计算),但我试图理解为什么这是一个问题。
Excel可以待机的子例程的数量是否有限制,或者这可能是由一个完全独立的问题引起的?
发布于 2018-08-25 03:14:32
显然,每次子例程运行时,Excel都会尝试更新整个工作簿。新的子例程的添加将它推到了一些看不见的和未知的极限(至少对我来说是看不见的和未知的)。这似乎解决了这个问题:
我将这三行添加到每个子例程的开头:
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual我在每个子例程的末尾添加了以下几行:
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic这样可以防止Excel尝试进行不必要的更新。它修复了这个问题,但它不能解释为什么最后三个子例程将它推到了极限。
https://stackoverflow.com/questions/51992191
复制相似问题