我有一个工作簿,其中包含三个模块,总共约19,000行代码。
我添加了多个按钮来运行性能出色的子例程。
我添加了四个新的子例程(都非常短,总共可能有200行)来复制/粘贴数据并构建图形。
一旦我添加了这些子例程,所有其他子例程都开始运行异常缓慢(从5-10秒到几分钟,并且完全冻结了Excel)。
我有一个解决方法(每次运行例程时都关闭并打开“自动计算”),但是我试图理解为什么这是一个问题。
Excel可以保留的子例程数量是否受到限制,或者这可能是由完全独立的问题引起的?
答案 0 :(得分:0)
显然,每次子程序运行时,Excel都会尝试更新整个工作簿。新子例程的添加使它超出了一些看不见和未知的限制(至少对我来说是看不见和未知的)。这似乎可以解决它:
我将这三行添加到每个子例程的开头:
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
然后我将这些行添加到每个子例程的末尾:
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
这可以防止Excel尝试不必要的更新。它解决了问题,但没有解释为什么最后三个子例程将其推到了极限。