Excel VBA计时器的性能取决于哪个表处于活动状态?

我有许多工作簿,每张工作表有不同数量的方程式,彼此相互联系。 我有一个工作簿广泛的VBA计时器,应该每5秒运行一次。

当我在没有很多公式的工作表上工作时,似乎每5秒运行一次…但是,如果我然后将活动工作表更改为“繁忙”工作表,则vba定时器只是不会熄灭…或者如果它熄灭,就像几分钟后。 直到我再次切换到一个不太忙碌的表格,然后这个定时器像正常一样神奇地运行,而不需要重置任何东西。

我没有任何特别的VBA代码专门在繁忙的工作表上…我不明白为什么VBA计时器代码将无法在所有表中一致运行? 如果定时器受到影响,则应该影响到所有的纸张,而不仅仅是某些纸张。

这里是VBA计时器代码:

Sub TimerTick() On Error GoTo ErrorHandler If toggletimer = True Then RunMyCode runWhen_ES = Now() + TimeValue("00:00:05") Application.OnTime EarliestTime:=runWhen_ES, Procedure:="TimerTick", Schedule:=True End If ErrorHandler: End Sub 

问题是Excel很难运行macros并让其他进程运行。 在指定您的等待条件后添加:

 DoEvents 

Excel将释放用于运行macros的资源和线程,而不是在等待的整个过程中搅动它。 这应该允许电子表格在等待周期之间正常工作。