我有一张包含许多工作表的工作簿,每张工作表都有不同数量的方程,这些方程彼此相互关联。我有一个工作簿宽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
答案 0 :(得分:1)
问题是Excel很难运行宏并让其他进程运行。在指定等待条件后添加此项:
DoEvents
Excel将释放用于运行宏的资源和线程,而不是在等待进行的整个过程中对其进行搅拌。这应该允许您的电子表格在等待周期之间正常运行。