
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
Greetings! Very helpful advice on this article! It is the little changes that make the biggest changes. Thanks a lot for sharing!