簡體   English   中英

Excel / VBA模型在多次運行中會減慢速度

[英]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

而不是復制和粘貼。 然而,所有這些似乎對我的模型的運行幾乎沒有影響,而模型的運行速度越來越慢。

關於下一步可以嘗試的任何想法?

=========編輯==================

這是代碼的兩個粘貼框:

主電子表格具有逐步運行每個模塊的代碼

子匯水模塊是主模塊運行的示例模塊

臨時而言,這是我看到的問題:

  1. 您使用的是Activate和Select方法,它們既緩慢又不可靠,

  2. 當工作簿打開或激活時,它們可能具有自己運行的代碼,

  3. 您不會禁用計算,這既很慢,又有可能導致您所看到的具有非常復雜的交叉鏈接計算的工作簿的“失控運行時間”

  4. 您正在為打開/激活/執行的工作簿使用可能不一致的字符串名稱,而不是為每個工作簿使用單個工作簿變量,從而不確定它們是否應在需要時全部關閉,並且

  5. 您沒有錯誤處理或檢測功能,但是在各個地方都禁用了錯誤報告功能,因此,如果在循環過程中出現任何錯誤,您將一無所知。

乍一看,這就是全部。 當所有這些問題都公開且足以說明任何數量的問題時,我不願意花費更多時間進行更深入的研究。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM