包含时钟的工作簿会自动重新打开

时间:2019-06-08 16:41:43

标签: excel vba

我在Module中有三个Sub:runClock,startClock和stopClock。

  • runClock显示的时钟每5秒更新一次。
  • startClock用于启动时钟,并从Sub Workbook_Open调用。
  • stopClock-用于停止时钟,并从Sub Workbook_BeforeClose调用。

但是,当我关闭工作簿时,它会自动重新打开并且时钟继续运行。我检查了ClockOn的值,并在执行Workbook_BeforeClose之后将其设置为FALSE。我认为该问题与Application.OnTime有关,但不知道如何解决。

此代码在模块中:

Global ClockOn As Boolean

Sub runClock()
    With Range("A1")
        .Value = Now()
        .NumberFormat = "hh:mm:ss"
        If ClockOn = True Then
            Application.OnTime Now + TimeSerial(0, 0, 5), "runClock"
        End If
    End With
End Sub

Sub startClock()
    ClockOn = True
    runClock
End Sub

Sub stopClock()
    ClockOn = False
End Sub

此代码在ThisWorkbook中:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    stopClock
    ActiveWorkbook.Save
End Sub

Private Sub Workbook_Open()
    startClock
End Sub

2 个答案:

答案 0 :(得分:0)

这似乎正在发生,因为Application.OnTime导致的时间不同。初始调用时间应另存为变量,然后在子菜单中引用。请参阅此解决方案。

https://www.ozgrid.com/forum/forum/help-forums/excel-general/131658-timer-reopens-workbook-when-closed

答案 1 :(得分:0)

http://www.cpearson.com/excel/OnTime.aspx

中找到了解决方案

我已经更改了我的sub stopClock,现在它包含以下代码:

RunWhen = Now + timeserial(0, 0, 5)
Application.OnTime earliestTime:=RunWhen, Procedure:="startClock", Schedule:=False

这将停止时钟运行,并重新打开工作簿。

我不知道是什么原因导致它在以前的代码下重新打开,但是至少现在还可以。