@ Excelosaurus, мы очень близки.Спасибо, что объяснили это логически на разных подводных лодках.Вот полный код.Это работает, но мои временные метки удваиваются, когда он записывает, закрывает и снова открывает.Я записываю некоторые RTD, и чтобы обновить RTD, нужно открыть и закрыть книгу.Я попытался вставить в ActiveWorkbook.ForceFullCalculation = True
, чтобы избежать дополнительных открытий / закрытий сабвуферов, но RTD не пересчитывал с использованием этого, поэтому единственным способом было запустить сабвуферы открывания / закрывания.
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, "RecordData"
End Sub
Sub StopRecordingData()
Application.StatusBar = "Recording Stopped"
On Error Resume Next
Application.OnTime NextTime, "OpenMe", , False
On Error GoTo 0
End Sub
Sub OpenMe()
Call RecordData
Application.OnTime Now + TimeValue("00:10:00"), "CloseMe"
End Sub
Sub CloseMe()
Application.OnTime Now + TimeValue("00:00:10"), "OpenMe"
ThisWorkbook.Close True
End Sub