Кнопка остановки субов с OnTime Macro не останавливается

У меня есть кнопка, назначенная сабвуферу StopRecordingData, чтобы отменить оба сабвуфера, и это не так. Расписание False, похоже, не отменяет запланированные подписки в очереди.

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 ответ

Решение

Вы должны либо

  • используйте 2 запятых в конце или
  • полное определение метода OnTime

Так как синтаксис метода OnTime имеет 4 аргумента, а последние 2 являются необязательными.

Application.OnTime EarliestTime, Процедура, [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
Другие вопросы по тегам