2016-01-13 34 views
-2

我有一個有大約500個單元格的excel工作簿,每個函數調用將數據發送到web API的3個函數中的1個,然後將其輸出到單元格。UDF計算當我滾動或移動Excel時停止

當我在自動計算中使用我的工作簿時,他們運行時我按F9但如果我移動工作簿/向下滾動停止所有計算沒有警告。有些單元可能已經完成。

有沒有辦法鎖定屏幕或保持功能在後臺運行的方式,而我移動excel?

當我點擊另一個工作簿時,它也停止。

有誰知道可能是什麼原因造成的?

即使在自動計算中,它也會停止計算實用程序,讓它閒置,然後在沒有提示的情況下再次啓動它。

+5

總是最好顯示您的代碼。 –

+5

我懷疑問題出在代碼中。 – Jeeped

+1

您可以顯示您使用的代碼嗎?我感覺這個問題在其中。 – BruceWayne

回答

1

與Excel的用戶交互,雖然它的計算應該中斷計算並稍後重新啓動(但重啓可能會有點問題,根據我的經驗)。你可以嘗試設置
Application.CalculationInterruptKey=xlNoKey
但它可能不會在VBA UDF中工作。
真的需要將UDF重寫爲異步,但是無法使用VBA執行此操作 - 您需要使用XLNA或Addin Express從C++或.NET使用XLL接口。

1

當您抓住滾動條時,計算停止,因爲Excel在單個線程上執行大部分處理。該線程無法同時滾動GUI並計算公式結果。 Charles Williams在異步UDF上是正確的。在Excel 2010的XLL SDK中引入了對異步UDF的支持。有關異步UDF的更多詳細信息,請參閱:https://msdn.microsoft.com/EN-US/library/office/ff475859.aspx