2013-04-17 36 views
2

我有一个24/7连续循环运行的宏。计算机偶尔会冻结,但在Excel代码中没有错误。该代码使用以下,为了有效地运行:在宏期间Excel没有响应

DoEvents 
Application.DisplayAlerts = False 
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
startagain: 
'code 
'calculations, alerts, and screen are updated 
GoTo startagain 

我也正在使用什么相信是复制和粘贴的有效方法(批量的代码被粘贴值和公式):

Length = Range("C1").Value 
Set rng = Sheets("Linked Data").Range("A2:AA" & Length) 
Range("A2").Value = rng.Value 

我将计算机上的处理器优先级改为EXCEL.exe的“高”,我将计算机性能设置为最高性能,我禁用了所有不必要的加载项,并关闭了自动恢复保存。

尽管如上所述,计算机有时会冻结并变得无法响应。有没有人知道可以做什么来提高可靠性?

+0

在机器上运行的任何其他应用程序?任何用户交互?您可能希望在每个循环结束时将您的rng变量设置为无。 –

+0

你的循环中是否有DoEvents子句?尝试将它放在startagain的下方: – KacireeSoftware

+0

没有其他应用程序正在运行。我使用后添加清除变量。通过移动循环内的doevents可以看到什么? – user2263642

回答

0

避免转到并使用Application.OnTime方法重复运行一个过程。

你也可以考虑创建一个自动化插件,这可能会导致作为其编译代码的性能重要性。

请参阅本link

您也可以参考这个链接性能imporvement link

+0

您是否可以进一步定义您的意思:“您也可以考虑创建一个自动化插件,这可能会导致作为编译代码的性能提升。” – user2263642

+0

使用Application.OnTime方法有什么好处吗? gotostart再次允许宏在宏完成后立即刷新数据。 – user2263642

+0

自动化插件与xla插件类似(求解器插件或分析工具包),但它们是编译代码,因此运行速度更快。您可以参考提供的链接了解完整的详细信息。还要求您在完成改进性能的过程中放置​​整个代码,以便获得更好的解决方案。 – Santosh