使用OnTime Macro停止子画面的按钮不会停止

时间:2019-01-24 03:54:14

标签: excel vba scheduled-tasks rtd ontime

我有一个分配给StopRecordingData子项的按钮来取消两个子项,但没有。排期为False似乎并不能取消que中的排期子。

Dim NextTime As Double

Sub RecordData()
    Dim Interval As Double
    Dim cel As Range, Capture As Range

    Application.StatusBar = "Recording Started"
    Set Capture = Worksheets("Dashboard").Range("C5:K5") 'Capture this row 
    of data
    With Worksheets("Journal") 'Record the data on this worksheet
    Set cel = .Range("A2") 'First timestamp goes here
    Set cel = .Cells(.Rows.Count, cel.Column).End(xlUp).Offset(1, 0)
    cel.Value = Now
    cel.Offset(0, 1).Resize(1, Capture.Cells.Count).Value = Capture.Value
    End With
    NextTime = Now + TimeValue("00:01:00")
    Application.OnTime NextTime, "CloseWB"
End Sub

Sub CloseWB()
    Application.OnTime NextTime, "RecordData"
    ThisWorkbook.Close True
End Sub

Sub StopRecordingData()
    Application.StatusBar = "Recording Stopped"
    Application.OnTime NextTime, "RecordData", False
    Application.OnTime NextTime, "CloseWB", False
End Sub

1 个答案:

答案 0 :(得分:2)

您必须

  • 最后使用2个逗号或
  • OnTime方法的完整方法定义

因为OnTime方法的语法有4个参数,而后2个是可选的。

  

Application.OnTime最早时间,过程,[ LatestTime ],   [时间表]

此外,对于与时间相关的变量,请选择DATE而不是DOUBLE。因此,请在顶部使用它。

Dim NextTime as Date

Sub StopRecordingData()
    Application.StatusBar = "Recording Stopped"
    Application.OnTime NextTime, "RecordData",, False
    Application.OnTime NextTime, "CloseWB",, False
End Sub

Sub StopRecordingData()
    Application.StatusBar = "Recording Stopped"
    Application.OnTime EarliestTime:=NextTime, Procedure:="RecordData", Schedule:=False
    Application.OnTime EarliestTime:=NextTime, Procedure:="CloseWB", Schedule:=False
End Sub