代码之家  ›  专栏  ›  技术社区  ›  mjac

用OnTime宏停止SUB的按钮不停止

  •  1
  • mjac  · 技术社区  · 7 年前

    我有一个指定给stopRecordingData子节点的按钮来取消两个子节点,但它没有。schedule 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 回复  |  直到 7 年前
        1
  •  2
  •   jainashish    7 年前

    你必须要么

    • 在结尾使用2个逗号,或
    • OnTime方法的完整方法定义

    作为 OnTime 方法有4个参数,最后2个是可选的。

    申请.最早的时间,程序[ 迟到时间 , [ 地铁列车时刻表 ]

    此外,对于与时间相关的变量,优先选择日期而不是双精度。所以在顶部使用这个。

    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