2016-01-13 49 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