Funkce spánku Excel VBA pro pozastavení vašeho makrokódu

Funkce spánku Excel VBA

Funkce spánku VBA je funkce systému Windows přítomná v souborech DLL systému Windows, která se používá k zastavení nebo pozastavení spuštění makra po určitou dobu po určité době, kdy můžeme program obnovit.

Existují situace, kdy potřebujeme pozastavit proces spouštění maker, abychom dokončili další sady úkolů. Jiné sady úkolů mohou být součástí našeho kódování nebo součástí jiného postupu makra nebo mohou být vstupem pro aktuální makro aplikace Excel. Jak můžete pozastavit spuštěný program? Můžeme pozastavit kód procedury na určitou dobu specifikovanou uživatelem a poté můžeme určitou část programu obnovit. Můžeme to udělat ve VBA pomocí funkce SLEEP.

Co dělá funkce spánku VBA?

SLEEP, jak název sám říká „spánek na nějakou dobu“, „odpočinek na nějakou dobu“, „pauza na čas“, čas na nějakou dobu ”atd. Funkce spánku umožňuje uživatelům pozastavit náš kód makra na milisekundy. Tímto způsobem můžeme zpozdit proces makrokódu.

Pokud si myslíte, že máme vestavěnou funkci nazvanou SLEEP, pak se mýlíte, protože ve VBA není taková funkce, spíše máme funkci nazvanou Sleep jako funkce systému Windows. Zadáním speciální sady kódu můžeme tuto funkci skutečně volat ve VBA. Ve skutečnosti je to funkce přítomná v souborech DLL systému Windows, takže před spuštěním podprogramu vba musíme deklarovat nomenklaturu API.

Níže je uveden kód VBA.

Kód:

# If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64-Bit versions of Excel # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' for 32-bit versions of Excel # Konec Pokud 

Zkopírujte výše uvedené a vložte do svého modulu, než začnete psát kódy maker. Takto by to mělo být vloženo do vašeho modulu.

Příklad

Než vám ukážu způsob psaní kódu, dovolte mi, abych vám řekl něco o spánkové funkci. Zpožďuje proces v milisekundách. Takže 1 sekunda se rovná 1000 milisekund, pokud chcete pauzu na 10 sekund, měla by to být 10 000 milisekund.

Tuto šablonu VBA Sleep Excel si můžete stáhnout zde - Šablona VBA Sleep Excel

Příklad č. 1

Po vložení kódu API před zahájením procedury Sub vytvořte název makra.

Kód:

# Sub Sleep_Example1 () End Sub 

Deklarujte dvě proměnné jako řetězec.

Kód:

 Dim StartTime jako řetězec Dim DimTime jako řetězec 

U proměnné StartTime přiřaďte hodnotu funkce TIME. Poznámka: Funkce TIME in Excel vrací aktuální čas.

Kód:

StartTime = čas

Nyní tuto zprávu zobrazíme ve schránce zpráv VBA.

Kód:

StartTime = Čas MsgBox StartTime

Nyní pomocí funkce spánku pozastavíme kód na 10 sekund. Jak jsem řekl, pozastavuje kód v milisekundách, takže k pozastavení na 10 sekund musíme použít 10 000 milisekund.

Kód:

 Sub Sleep_Example1 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10 000) End Sub 

Nyní použijte druhou proměnnou EndTime a přiřaďte aktuální čas.

Kód:

 Sub Sleep_Example1 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10 000) EndTime = Time MsgBox EndTime End Sub 

Nyní dvě proměnné StartTime a EndTime budou obsahovat počáteční a koncový čas makra. Spusťte toto makro, nejprve uvidíme počáteční čas makra, tj. Aktuální čas ve vašem systému.

Klikněte na OK, bude spát 10 sekund. Můžete vidět symbol vyrovnávací paměti.

Po 10 sekundách začne kód pokračovat, takže se zobrazí čas ukončení, tj. Po 10 sekundách čekání, jaký je aktuální čas.

Nyní můžete vidět, že makro začalo v 10:54:14 a skončilo v 10:54:24, tj. Přesně tam je 10sekundový rozdíl. Za těchto 10 sekund VBA pozastaví spuštění kódu.

Příklad č. 2 - Funkce spánku ve smyčkách

Režim spánku se nejlépe používá se smyčkami ve VBA. Například chci vložit sériová čísla od 1 do 10 pomocí smyčky Do while ve VBA.

Po vložení jednoho čísla by měl můj kód počkat 3 sekundy, takže když smyčka běží 10krát, měla by být celkem 30 sekund.

Kód:

 Sub Sleep_Example2 () Dim k As Integer k = 1 Do While k <= 10 Cells (k, 1). Hodnota = kk = k + 1 Sleep (3000) '1 000 milisekund je 1 sekunda, takže 3000 se rovná 3 sekundám Konec smyčky Sub 

Spusťte tento kód a k dokončení procesu musíte počkat minimálně 30 sekund.

Chcete-li sledovat přesný čas, použijte níže uvedený kód.

Kód:

 Sub Sleep_Example2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Your Code Started at" & StartTime k = 1 Do While k <= 10 Buňky (k, 1). Hodnota = kk = k + 1 Spánek (3000) '1 000 milisekund je 1 sekunda, takže 3000 se rovná 3 sekundám Loop EndTime = Čas MsgBox "Váš kód skončil v" & EndTime End Sub 

Tento kód zobrazí 2 zprávy, první zobrazí počáteční čas a druhý koncový čas.

Poznámka: Při spouštění tohoto kódu nemůžete použít Excel, ani klávesa Escape nebude fungovat.


$config[zx-auto] not found$config[zx-overlay] not found