2015-10-19 90 views
-2

我見過其他用戶發佈了一些相同的問題,但核心問題似乎並不一樣(據我所知)。當其他Excel文件打開時宏緩慢

我有一個Excel工作簿,通過​​大約80 000行和四列數據。這最多需要1-2秒。該工作簿確實在其他工作表中進行操作,但對於測試,我已將這些子工作關閉。如果我打開約10 Mb的.xlsx,則需要更長時間但不多。如果我用一些相當大的代碼打開一個.xlsm文件,大約需要6-7秒才能完成相同的操作。

我到目前爲止讀到的是應該使用範圍設置變量而不是單元格引用,計算設置爲手動,屏幕更新關閉。這些似乎都沒有做到這一點。

回答

0

如果事件沒有被禁用,這也可以添加的代碼開始之前:

Application.EnableEvents = False 

當一切都完成了它更改爲True。

如果你想進一步優化的東西,一種可能性是將其分配給一個變量:

Dim Temp as Variant 
Temp = ActiveSheet.UsedRange.Value 

分析和改變溫度,然後把它放回去

ActiveSheet.UsedRange = Temp 
+0

這可能是有保障的。 WB在EnableEvents上依賴很多。用戶在Worksheet_Change(ByVal Target As Range)的幫助下更改日期或成本中心。這需要我一兩天的時間,但我會確保發佈更新。 非常感謝Demetri。 – Mugsinspace

+0

對不起,延遲迴復。 enableevents = false不起作用。還沒有嘗試過變種版本。一旦我嘗試過和其他解決方案,我一定會回覆。非常感謝,杯子 – Mugsinspace

0

我終於想通出。它與Excel的實例有關。如果在同一個Excel實例中打開多個重型宏文件,則比使用每個文件一個實例需要更長的時間。我不知道這是爲什麼,但是從我讀過的這個錯誤來看,這是自從2003年以來一直存在的錯誤。

所以現在我所要做的就是確保每個人都使用多個實例。不幸的是,你必須做一些寄存器更改才能自動實現。我目前正在使用.bat文件替代。

+0

請不要發佈「謝謝」作爲對問題的回答。一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你就可以[upvote問題和答案](http://stackoverflow.com/help/privileges/vote-up )你發現有幫助。 – mathielo