Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA计时器性能因激活的工作表而异?_Vba_Excel_Timer - Fatal编程技术网

Excel VBA计时器性能因激活的工作表而异?

Excel VBA计时器性能因激活的工作表而异?,vba,excel,timer,Vba,Excel,Timer,我有一本有很多工作表的工作簿,每张工作表都有不同数量的相互关联的方程。我有一个工作簿范围的VBA计时器,应该每5秒运行一次 当我在一张没有太多公式的工作表上工作时,它似乎每5秒运行一次。。。但是,如果我随后将活动工作表更改为更“繁忙”的工作表,vba计时器不会关闭。。。或者,如果它真的发生了,就好像几分钟后。直到我再次切换到不那么忙的工作表,然后计时器像正常一样神奇地运行,而不必重置任何东西 我没有任何特殊的VBA代码,特别是在繁忙的工作表。。。我不明白为什么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很难运行宏并让其他进程运行。在指定等待条件后添加此选项:

DoEvents

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

如果没有看到
RunMyCode
,很难判断。如果它导致重新计算活动工作表,那么如果活动工作表有大量公式,那么您的代码当然会显得滞后。这里的问题是我在子TimerTick()上设置了一个断点。它甚至都没有进入那。好吧。。。工作表中的TimerTick是否处于打开状态?首先应该启动什么?不,TimerTick代码存在于工作簿的“模块”区域中。通过单击将toggletimer设置为true的按钮(在工作表上)调用它,然后调用TimerTick()子例程:Sub startTimer()toggletimer=true TimerTick()End Sub另一个关键信息是其他用户没有相同的问题。这种情况发生在特定的计算机上。我已经检查了所有Excel配置,它们都是一样的…:(