2013-03-15 83 views
0

當我在Excel中執行我的代碼(需要3-4分鐘執行)時,我點擊了某些內容或在我的用戶窗體中,它凍結,變白,幾乎崩潰......當執行準備就緒一切都很好。在執行過程中Excel凍結

當然,在執行過程中我無法在excel中工作是正常的,但我怎樣才能避免excel的「崩潰」?

+5

沒有「幾乎崩潰」這樣的事情 - 它崩潰了,或者它不崩潰。 – 2013-03-15 15:52:07

+1

當代碼正在運行時,不要單擊任何東西在Excel中... – 2013-03-15 16:16:07

回答

0

您需要做的是創建一個覆蓋Excel UI的自定義UserForm,如Progress Bar。您還需要研究如何強制您的表單停留在ontop上,很像modal form。您不能使用modal form,因爲他們停止執行。

+0

嘿,我有一個進度條窗體,我需要添加哪些行? – user2156096 2013-03-15 18:34:37

+1

@ user2156096使用['DoEvents'](http://msdn.microsoft.com/zh-cn/library/aa231254%28v=vs.60%29.aspx)函數查看 – Brad 2013-03-15 19:53:43

1

防止這類問題的最佳方法是對代碼進行基準測試,以確定需要這麼長時間。如果您的代碼需要超過3分鐘才能運行,那麼您幾乎可以肯定有優化的空間。

這裏有你需要採取的步驟:正在執行的代碼內

  1. 設置多個斷點。
  2. 時間從一個斷點到下一個斷點需要多長時間。
  3. 一旦你確定了罪魁禍首,重構。
  4. 如果您無法提高性能,請發佈效率低下的代碼並尋求幫助。

一個臭名昭着的慢速反模式要注意的是在循環中選擇事物。

0

確保沒有無限循環讓excel無響應後,嘗試優化代碼。

我發現this關於vba-excel代碼優化的一個非常有趣的閱讀,其中一些實踐實際上對我寫的一個耗時又耗時的模塊有影響。希望能幫助到你。

1

你有代碼中的循環嗎?

如果是這樣,請在初始化循環後添加以下行,它應該有助於解決問題!

DoEvents