Excel VBA计时器性能根据哪个工作表有效而不同?

时间:2015-08-20 15:52:21

标签: excel vba excel-vba timer

我有一张包含许多工作表的工作簿,每张工作表都有不同数量的方程,这些方程彼此相互关联。我有一个工作簿宽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

1 个答案:

答案 0 :(得分:1)

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

DoEvents

Excel将释放用于运行宏的资源和线程,而不是在等待进行的整个过程中对其进行搅拌。这应该允许您的电子表格在等待周期之间正常运行。

相关问题