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á pod soubory 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é procedury 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 nějakou 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 již název napovídá, „spánek na nějakou dobu“, „odpočinek na nějakou dobu“, „pauza na nějaký čas“, „pauza na nějakou dobu“, atd … Funkce spánku umožňuje uživatelům pozastavit náš makro kód 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 taková funkce neexistuje. Spíše máme funkci nazvanou Spánek jako funkce systému Windows. Zadáním speciální sady kódů můžeme tuto funkci skutečně volat ve VBA. Ve skutečnosti se jedná o funkci přítomnou v souborech DLL systému Windows, takže před spuštěním podprogramu ve 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 #End If

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, řeknu vám o funkci spánku ještě trochu víc. Zpožďuje proces v milisekundách. Takže 1 sekunda se rovná 1000 milisekund, pokud chcete pauzu 10 sekund, měla by to být 10 000 milisekund.

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

Pro proměnnou 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 se pozastaví 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. Spustit 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 obnovovat kód, 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ůj kód měl 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 schránky zpráv, první bude zobrazovat počáteční čas a druhé bude zobrazovat čas ukončení.

Poznámka: Při spuštění tohoto kódu nemůžete používat aplikaci Excel. Ani únikový klíč nebude fungovat.

Zajímavé články...