Excel VBA计时器性能因激活的工作表而异?
我有一本有很多工作表的工作簿,每张工作表都有不同数量的相互关联的方程。我有一个工作簿范围的VBA计时器,应该每5秒运行一次 当我在一张没有太多公式的工作表上工作时,它似乎每5秒运行一次。。。但是,如果我随后将活动工作表更改为更“繁忙”的工作表,vba计时器不会关闭。。。或者,如果它真的发生了,就好像几分钟后。直到我再次切换到不那么忙的工作表,然后计时器像正常一样神奇地运行,而不必重置任何东西 我没有任何特殊的VBA代码,特别是在繁忙的工作表。。。我不明白为什么VBA计时器代码不能在所有工作表上一致运行?如果计时器要受到影响,那么它应该在所有纸张上受到影响,而不仅仅是在某些纸张上 以下是VBA计时器代码:Excel VBA计时器性能因激活的工作表而异?,vba,excel,timer,Vba,Excel,Timer,我有一本有很多工作表的工作簿,每张工作表都有不同数量的相互关联的方程。我有一个工作簿范围的VBA计时器,应该每5秒运行一次 当我在一张没有太多公式的工作表上工作时,它似乎每5秒运行一次。。。但是,如果我随后将活动工作表更改为更“繁忙”的工作表,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很难运行宏并让其他进程运行。在指定等待条件后添加此选项:
DoEvents
Excel将释放用于运行宏的资源和线程,而不是在整个等待过程中对宏进行搅动。这将允许您的电子表格在等待周期之间正常运行。如果没有看到
RunMyCode
,很难判断。如果它导致重新计算活动工作表,那么如果活动工作表有大量公式,那么您的代码当然会显得滞后。这里的问题是我在子TimerTick()上设置了一个断点。它甚至都没有进入那。好吧。。。工作表中的TimerTick是否处于打开状态?首先应该启动什么?不,TimerTick代码存在于工作簿的“模块”区域中。通过单击将toggletimer设置为true的按钮(在工作表上)调用它,然后调用TimerTick()子例程:Sub startTimer()toggletimer=true TimerTick()End Sub另一个关键信息是其他用户没有相同的问题。这种情况发生在特定的计算机上。我已经检查了所有Excel配置,它们都是一样的…:(