2014-02-26 48 views
0

我有我使用我的論文一款基於Excel的模型。爲了加快速度,我對它進行了相當多的修改,但我現在只是放棄了優化。該模型打開excel工作簿和複製數據,並關閉它們等。的Excel/VBA型號減慢多次運行

我在試圖做1000-2000左右的模擬與此模型,但模型運行所需的時間從第一次約60secs在大約60次運行之後,少數運行超過100秒。如果我關閉並重新打開excel,則時間會再次下降。我已經在優化VBA代碼中進行了閱讀,並試圖儘可能多地實現。我已在

Application.CutCopyMode = False 

在每個循環結束時每次清除剪貼板。自那時以來我試圖繞過剪貼板的東西,如

Workbooks("Master").Range().value = Workbooks("Module").Range().value 

而不是複製和粘貼。然而,所有這些似乎對我的模型運行影響不大,但仍然變得越來越慢。

任何想法,我可以嘗試下?

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

下面是該代碼的兩個pastebins:

Master Spreadsheet有其中步驟通過並運行各模塊

SubCatchment Module代碼是受主

+0

請發表您的代碼 – Ripster

+0

我們需要看到更多的代碼。 –

+0

我不知道要發佈什麼代碼。有很多模塊和工作簿分佈很廣 – Chris

回答

1

副手運行的示例模塊,這裏是我所看到的問題:

  1. 您正在使用的激活和選擇的方法,這兩者都是緩慢和不可靠的,

  2. 它們打開或啓動的時候,工作簿可以有自己的運行代碼,

  3. 你是不是禁用計算速度很慢,並且傾向於導致出現非常複雜的交叉計算工作簿的「失控運行時間」

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

  5. 您沒有錯誤處理或檢測,但您在各個地方禁用錯誤報告,因此您可以如果在循環過程中出現任何問題,我們不會有任何真正的想法。

這就是乍一看。當所有這些問題都公開並且本身足以解釋任何問題時,我都不願意花更多的時間去深入。