我在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
答案 0 :(得分:0)
这似乎正在发生,因为Application.OnTime导致的时间不同。初始调用时间应另存为变量,然后在子菜单中引用。请参阅此解决方案。
答案 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
这将停止时钟运行,并重新打开工作簿。
我不知道是什么原因导致它在以前的代码下重新打开,但是至少现在还可以。