2017-03-23 9 views
-2

haben einen VBA-Code, der alle 5 Sekunden einige Zellen in eine neue Zeile gespeichert. Ich würde diese Aufgabe gerne jeden Tag von 7 bis 20 Uhr erledigen. Dann lösche die Zellen nach 22 Uhr, damit ich am nächsten Tag anfangen kann (Löschbereich B2: C10000). Schätze deine Hilfe. Im Folgenden finden Sie meine aktuellen Makro:Excel Schedule VBA zu einem bestimmten Zeitpunkt

Option Explicit 
Public dTime As Date 

Sub ValueStore() 
    Dim RowNo As Long 
    RowNo = Sheets("Data").Cells(Rows.Count, 3).End(xlUp).Row + 1 

    Sheets("Data").Cells(RowNo, 2) = Sheets("GetData").Cells(2, 2).Value2 
    Sheets("Data").Cells(RowNo, 3) = Sheets("GetData").Cells(2, 5).Value2  
    Call StartTimer 
End Sub 
Sub StartTimer() 

    dTime = Now + TimeValue("00:00:05") 
    Application.OnTime dTime, "ValueStore", Schedule:=True 
End Sub 

Sub StopTimer() 
    On Error Resume Next 
    Application.OnTime dTime, "ValueStore", Schedule:=False 
End Sub 
+0

eine If-Anweisung Verwenden Sie die aktuelle Zeit zu überprüfen? –

+2

Das sieht nach einer guten Aufgabe für Windows-Dienstanwendung aus - https://msdn.microsoft.com/en-us/library/d56de412(v=vs.110).aspx – Vityata

Antwort

0

Added ein Looping Unter verschiedene Aufgaben auszuführen:

If hasRun = False Then 
    Sheets("GetData").Range("H1").Value = "Running" 
    dTime = Now + TimeValue("00:00:10") 
    Application.OnTime dTime, "ValueStore", Schedule:=True 

    Application.OnTime TimeValue(Sheets("GetData").Range("O1").Text), "StartTimer" 
    Application.OnTime TimeValue(Sheets("GetData").Range("O2").Text), "StopTimer" 
    Application.OnTime TimeValue(Sheets("GetData").Range("O3").Text), "DeleteData" 
    hasRun = True 
End If 

End Sub

Verwandte Themen