Кнопка остановки субов с 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