[英]Excel/VBA Model slows down over multiple runs
我有一个基于excel的模型,用于我的论文。 为了加快速度,我已经对其进行了很多修改,但是现在我已经放弃了对其进行优化。 该模型将打开excel工作簿,并在其中复制数据并关闭它们,等等。
我正在尝试使用此模型进行大约1000-2000次仿真,但是模型运行所需的时间从前几次运行的大约60秒增加到大约60次运行的100秒以上。 如果我关闭并重新打开excel,那么时间会再次减少。 我已经阅读了有关优化VBA代码的内容,并尝试尽可能多地实现。 我已经放入
Application.CutCopyMode = False
在每个循环的末尾每次清除剪贴板。 从那以后,我就尝试通过诸如
Workbooks("Master").Range().value = Workbooks("Module").Range().value
而不是复制和粘贴。 然而,所有这些似乎对我的模型的运行几乎没有影响,而模型的运行速度越来越慢。
关于下一步可以尝试的任何想法?
=========编辑==================
这是代码的两个粘贴框:
主电子表格具有逐步运行每个模块的代码
子汇水模块是主模块运行的示例模块
临时而言,这是我看到的问题:
您使用的是Activate和Select方法,它们既缓慢又不可靠,
当工作簿打开或激活时,它们可能具有自己运行的代码,
您不会禁用计算,这既很慢,又有可能导致您所看到的具有非常复杂的交叉链接计算的工作簿的“失控运行时间”
您正在为打开/激活/执行的工作簿使用可能不一致的字符串名称,而不是为每个工作簿使用单个工作簿变量,从而不确定它们是否应在需要时全部关闭,并且
您没有错误处理或检测功能,但是在各个地方都禁用了错误报告功能,因此,如果在循环过程中出现任何错误,您将一无所知。
乍一看,这就是全部。 当所有这些问题都公开且足以说明任何数量的问题时,我不愿意花费更多时间进行更深入的研究。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.