2017-03-23 103 views
-2

有一個VBA代碼,每隔5秒將一些單元格保存到一個新行。我想每天從早上7點到晚上8點執行此任務。然後在晚上10點後刪除細胞,這樣我可以在第二天開始新鮮(刪除範圍B2:C10000)。感謝你的幫助。下面是我當前的宏:Excel預定VBA在特定時間運行

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

使用IF語句來檢查當前時間? –

+2

對於Windows服務應用程序來說,這看起來很不錯 - https://msdn.microsoft.com/zh-cn/library/d56de412(v=vs.110).aspx – Vityata

回答

0

增加了一個循環子運行不同的任務:

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 

末次