【发布时间】:2017-09-26 06:50:44
【问题描述】:
我正在运行的 VBA 代码基本上是:
- 将某些单元格设置为等于某些值
- 这些被输入到产生数字的模型中
- 求解器用于改变一个输入并获得最终的数字输出
循环数约为 150,不会太多。 这一切都发生在工作簿 2 中。计算发生在工作簿 1 中。 在工作簿 1 中,有相当多的单元格中包含用户定义的函数。总共大约 4000 个。
运行 VBA 代码时,整个过程需要一分钟多的时间才能完成。如果我删除工作表 1 中的数据(因为这个特定的宏不需要它),那么 VBA 代码只需要大约 5 秒。这很好。
有没有办法有效地关闭/锁定/忽略所有这些 UDF 单元,以免减慢宏的速度?只是那个范围的数据。我尝试过 ManualCalc Vs AutoCalc,但似乎没有做到这一点。
提前致谢
安东尼
【问题讨论】:
-
您可以将有问题的“工作表 1”排除到另一个工作簿中作为解决方法。
-
是的,这是最可能的选择,谢谢。唯一的问题是模型必须为每个工作簿更新数据。把它想象成工作表 1 中的“模型表”,它从外部程序中引入数据。然后工作表 2、3、4.. 是来自该数据的分析。如果我将工作表 1 拆分出来,我需要将外部数据带入多个工作簿,因为 Solver 我假设需要在同一个工作簿中引用某些内容。
标签: vba performance excel user-defined-functions solver