Automatické spouštění makra v určitý čas

Application.OnTime

V první části tohoto článku představím, jak nastavit spouštění makra v určitý čas. V druhé části ukáži, jak spouštět makro, vždy po uplynutí uřčitého časové období. V obou případech použijeme funkci Application.OnTime.

Návod: Spouštění makra v určitý čas

Vytvoříme novou Sub proceduru, do které vložíme funkci Application.OnTime. Nově vytvořenou proceduru vyvoláme z té, kterou budeme časovačem spouštět, pomocí funkce Call. Čas v který se má makro spouštět definujeme do funkce OnTime, další funkcí TimeValue, do které zadáme čas ve formě textu.

Application.OnTime syntaxe

Application.OnTime TimeValue(čas ve formě textu), (Název makra, které spouštíme. Ve formě textu, tedy v uvozovkách.)

Příklad kódu:

Následující kód, každý den vypíše do poslední bunky v seznamu ve sloupcích A a B aktuální datum a čas.

Sub PrintDateTime()
 Dim i As Long
 i = Application.WorksheetFunction.CountA(Range("A:A"))
 Cells(i + 1, 1) = Date
 Cells(i + 1, 2) = Time

 Call TimeManager

End Sub

Sub TimeManager()
 
 Application.OnTime TimeValue("08:00:00"), "PrintDateTime"

End Sub

Návod: Spouštění makra za časové období

V tomto případě použijeme navíc funkci Now, která vrací hodnotu aktuálního času.

Příklad kódu:

Následující kód vypýše do poslední buňky ve sloupci A a B akutální datum a čas každou sekundu.

Čas do funkce OnTime definujeme funkcemi Now + TimeValue, kde Now představuje akutální čas a TimeValue časovou periodu jak často se bude makro spouštět.

Pro uložení času použijeme Public proměnou z důvodu, aby bylo možné funkci OnTime ukončit, další Sub procedurou.

Public ExeTime

Sub PrintDateTime()
 Dim i As Long
 i = Application.WorksheetFunction.CountA(Range("A:A"))
 Cells(i + 1, 1) = Date
 Cells(i + 1, 2) = Time

 Call TimeManager

End Sub

Sub TimeManager()
 ExeTime = Now + TimeValue("00:00:01")
 Application.OnTime ExeTime, "PrintDateTime"
End Sub

Sub EndProcess()
 Application.OnTime ExeTime, "PrintDateTime", , False
End Sub

Ukončení Opakování

K ukončení funkce procesu použijeme opět funkci OnTime. Čas použijeme z Public proměné, název procedury zůstává stejný, jako poslední čtvrtý argument funkce použijeme hodnotu False. Třetí argument necháme prázdný.

Syntaxe:

Application.OnTime (Čas z proměné), (Název procedury), , False

Efektivní přidávání zaškrtávacích políček pomocí makra.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *