在其他模块在VBA项目中运行时,在Excel工作簿中运行时钟将停止

我在我的Excel工作簿上有一个运行时钟,当我在工作簿中运行其他代码时,时钟往往停止。 每当发生这种情况,我都必须时刻回来。 是否有时钟自动运行,而不是我必须实现它,并点击它?

也许这将有助于:

 Option Explicit Private clockStart As Boolean Sub runClock(ByVal flag As Boolean) Dim functionWithParam As String Range("A1").Value = Now(): DoEvents functionWithParam = "'runClock " & Chr(34) & flag & Chr(34) & "'" If clockStart Then Application.OnTime Now + TimeSerial(0, 0, 1), functionWithParam End Sub Sub startClock() clockStart = True runClock True End Sub Sub stopClock() clockStart = False End Sub 

或这个版本:

 Option Explicit #If VBA7 Then '64 Bit Systems Public Declare PtrSafe Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As LongPtr) #Else '32 Bit Systems Public Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds as Long) #End If Private clockStart As Boolean Sub runClock() While clockStart Range("A1").Value = Now() Sleep 1000 DoEvents Wend End Sub Sub startClock() clockStart = True runClock End Sub Sub stopClock() clockStart = False End Sub 

当Application.OnTime方法的可选的LatestTime参数保留为空时,而不是尝试使用默认的无限期等待,为什么不合并您可能在其他代码中使用的几个Application事件呢?

 Public Sub appTGGL(Optional bTGGL As Boolean = True) Application.ScreenUpdating = bTGGL Application.EnableEvents = bTGGL Application.DisplayAlerts = bTGGL Application.Calculation = IIf(bTGGL, xlCalculationAutomatic, xlCalculationManual) If bTGGL Then startClock Else stopClock End If End Sub 

在“其他代码”开始时,使用appTGGL bTGGL:=False ,在其他子过程结束时更简单地使用appTGGL

时钟将在运行过程中停止。 这听起来像On Error Resume Next克服.Find或东西是打破它反正。 只要你的程序完成,时钟将被重新启动。 如果其他程序没有完成,你会遇到比一天只有两次的时钟更大的问题。

记得要摆脱其他程序中的所有多余的代码,

 Application.ScreenUpdating = False Application.EnableEvents = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual