当前位置: 首页 > 知识库问答 >
问题:

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

幸弘光
2023-03-14

我有一个包含三个模块的工作簿,总共大约19000行代码。

我添加了多个按钮来运行性能完美的子程序。

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

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

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

Excel在待机状态下可以拥有的子例程数量是否有限制,或者这可能是由完全不同的问题引起的?

共有1个答案

花健
2023-03-14

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

我在每个子程序的开头添加了这三行:

Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

我在每个子程序的末尾添加了这些行:

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

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

 类似资料:
  • 使用 shift 检索子例程的参数 子例程的参数来自于特殊的 @_ 数组。不带参数的 shift 默认使用 @_。 sub volume { my $height = shift; my $width = shift; my $depth = shift; return $height * $width * $depth; } 使用列表赋值来赋给子例程参数

  • 首先,我对django和python都是新手。 我正在处理一个使用django guardian 1.3的现有项目。2.我验证了此应用部署的服务器也使用1.3。2通过。 我正在试图了解异常的原因。 有现有的管理员。py文件,可以正常加载。 我添加了我的,这也可以(在我的机器上)工作。 我们部署了应用程序,现在它无法启动,出现以下异常: 回溯(最近一次调用):文件“/usr/local/share/

  • 我有一个主机名列表,我应该通过使用正确的URL来打电话。假设我在链表中有四个主机名(hostA,hostB,hostC,hostD)- 执行hostA url,如果hostA启动,则获取数据并返回响应 此外,我的应用程序中运行了一个后台线程,其中包含阻止主机名列表(来自我的另一个服务),我们不应该调用该列表,但它每10分钟运行一次,因此阻止主机名列表只会在10分钟后更新,因此如果存在任何阻止主机名

  • 例7.1 编写一个子程序UPPER,实现把寄存器AL中存放的字符变大写。 解: ;子程序功能:把AL中存放的字符变大写 ;入口参数:AL ;出口参数:AL ;算法描述:判断AL中字符必须在'a'~'z'之间才能把该字符变为大写 UPPER PROC CMP AL, 'a' ;书写'a'的ASCII码61H也可以 JB over CMP AL, 'z' JA over SUB AL, 20H ;书写

  • 根据了解node.js事件循环,node.js支持单线程模型。这意味着如果我向node.js服务器发出多个请求,它不会为每个请求生成一个新线程,而是一个接一个地执行每个请求。这意味着如果我在node.js代码中对第一个请求执行以下操作,同时节点上出现一个新请求,第二个请求必须等到第一个请求完成,包括5秒的睡眠时间。对吗? 有没有一种方法可以让node.js为每个请求生成一个新线程,这样第二个请求就

  • 我想知道是否可以通过使用更多的超类来提高应用程序的性能。我的问题是关于Kotlin的,但我假设对Java的答案也是一样的。 假设您有这样的继承模式(右边的类是他左边的类的子类): a 也就是说,您不需要所有子类中定义的所有东西,而只需要A类的属性和函数。由于一个模糊的原因,您的代码只使用Z类。 提前感谢您的回答。