首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加子例程会影响所有其他子例程的性能

添加子例程会影响所有其他子例程的性能
EN

Stack Overflow用户
提问于 2018-08-24 02:32:08
回答 1查看 125关注 0票数 0

我有一个工作簿,其中包含三个模块,总共有大约19,000行代码。

我添加了多个按钮来运行子程序,这些子程序运行得很好。

我添加了四个新的子例程(都很短,可能总共200行)来复制/粘贴数据和构建图形。

一旦我添加了这些子例程,所有其他的子例程就开始异常缓慢地运行(从5-10秒到几分钟,一些Excel完全冻结)。

我有一个解决方法的想法(每次运行例程时关闭和打开自动计算),但我试图理解为什么这是一个问题。

Excel可以待机的子例程的数量是否有限制,或者这可能是由一个完全独立的问题引起的?

EN

回答 1

Stack Overflow用户

发布于 2018-08-25 03:14:32

显然,每次子例程运行时,Excel都会尝试更新整个工作簿。新的子例程的添加将它推到了一些看不见的和未知的极限(至少对我来说是看不见的和未知的)。这似乎解决了这个问题:

我将这三行添加到每个子例程的开头:

代码语言:javascript
复制
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

我在每个子例程的末尾添加了以下几行:

代码语言:javascript
复制
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

这样可以防止Excel尝试进行不必要的更新。它修复了这个问题,但它不能解释为什么最后三个子例程将它推到了极限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51992191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档