UDF计算滚动或移动Excel时停止

时间:2016-01-13 17:57:24

标签: excel vba excel-vba

我有一个excel工作簿,它有大约500个单元格,每个单元格调用3个函数中的1个,这些函数将数据发送到Web API,然后将其输出到单元格。

当我在自动计算中使用我的工作簿时,它们会在我按F9时运行但是如果我移动工作簿/向下滚动则会停止所有计算而不会发出警告。一些细胞可能已经完成。

当我在excel周围移动时,有没有办法锁定屏幕或保持功能在后台运行?

当我点击另一个工作簿时它也会停止。

有谁知道可能导致这种情况的原因?

即使在自动计算中,它也会停止计算,我会让它空闲,然后在没有提示的情况下再次启动它们。

2 个答案:

答案 0 :(得分:1)

用户与Excel的交互,而其计算应该会中断计算并在以后重新启动(但根据我的经验,重启可能有点问题)。您可以尝试设置
Application.CalculationInterruptKey=xlNoKey
但是它可能无法在VBA UDF中工作。
实际上你需要将UDF重写为异步,但你无法使用VBA执行此操作 - 您需要使用XLL接口,使用XL ++或.NET,使用XLDNA或Addin Express。

答案 1 :(得分:1)

当您抓取滚动条时计算停止,因为Excel在单个线程上执行大部分处理。该线程无法滚动GUI并同时计算公式结果。 Charles Williams对异步UDF是正确的。 Excel 2010中的XLL SDK中引入了对异步UDF的支持。此处有关于异步UDF的更多详细信息:https://msdn.microsoft.com/EN-US/library/office/ff475859.aspx