Funkcia spánku Excel VBA na pozastavenie vášho makrokódu

Funkcia spánku Excel VBA

Funkcia VBA Sleep je funkcia systému Windows prítomná v súboroch DLL systému Windows, ktorá sa používa na zastavenie alebo pozastavenie spustenia postupu makra po stanovenú dobu po uplynutí určitého času, počas ktorého môžeme program obnoviť.

Existujú situácie, kedy je potrebné pozastaviť náš proces spustenia makra, aby sme mohli dokončiť ďalšie súbory úloh. Ďalšie súbory úloh môžu byť súčasťou nášho kódovania alebo súčasťou iného postupu makra, alebo môžu byť vstupom pre aktuálne makro programu Excel. Ako môžete pozastaviť spustený program? Môžeme pozastaviť kód postupu na určitý čas stanovený používateľom a potom môžeme v určitom množstve pokračovať v programe. Môžeme to urobiť vo VBA pomocou funkcie SLEEP.

Čo robí funkcia spánku VBA?

SLEEP, ako už samotný názov hovorí, „nejaký čas spať“, „nejaký čas odpočívať“, „nejaký čas pozastaviť“, nejaký čas vypnúť, atď. … Funkcia spánku umožňuje používateľom pozastaviť náš makrokód na milisekundy. . Pomocou toho môžeme oddialiť proces makrokódu.

Ak si myslíte, že máme vstavanú funkciu s názvom SLEEP, mýlite sa, pretože vo VBA takáto funkcia neexistuje. Namiesto toho máme funkciu nazvanú Spánok ako funkcia systému Windows. Zadaním špeciálnej sady kódov môžeme túto funkciu volať vo VBA. V skutočnosti je to funkcia prítomná v súboroch DLL systému Windows, takže pred začiatkom podprogramu vo VBA musíme deklarovať nomenklatúru API.

Nižšie je uvedený kód VBA.

Kód:

# Ak VBA7 potom verejné vyhlásenie PtrSafe Sub Sleep Lib „kernel32“ (ByVal dwMilliseconds As LongPtr) 'pre 64-bitové verzie programu Excel #Else Public Declare Sub Sleep Lib „kernel32“ (ByVal dwMilliseconds As Long)' pre 32-bitové verzie Excel #End If

Skopírujte vyššie uvedené a vložte do svojho modulu skôr, ako začnete písať kódy makier. Takto by to malo byť vložené do vášho modulu.

Príklad

Predtým, ako vám ukážem spôsob písania kódu, poviem vám niečo viac o funkcii spánku. Proces sa oneskoruje o milisekundy. Takže 1 sekunda sa rovná 1 000 milisekúnd, ak chcete pauzu na 10 sekúnd pozastaviť, malo by to byť 10 000 milisekúnd.

Príklad č

Po vložení kódu API pred začiatkom procedúry Sub vytvorte názov makra.

Kód:

#Sub Sleep_Example1 () End Sub

Deklarujte dve premenné ako reťazec.

Kód:

Dim StartTime As String Dim EndTime As String

Pre premennú StartTime priraďte hodnotu funkcii TIME. Poznámka: Funkcia TIME v programe Excel vráti aktuálny čas.

Kód:

StartTime = čas

Teraz túto správu zobrazíme v schránke správ VBA.

Kód:

StartTime = Čas MsgBox StartTime

Teraz pomocou funkcie spánku pozastavíme kód na 10 sekúnd. Ako som povedal, kód sa pozastaví v milisekundách, aby sa pozastavil na 10 sekúnd. Musíme použiť 10 000 milisekúnd.

Kód:

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

Teraz použite druhú premennú EndTime a priraďte aktuálny č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

Teraz dve premenné StartTime a EndTime budú obsahovať počiatočný a konečný čas makra. Spustiť toto makro; najskôr uvidíme začiatočný čas makra, tj aktuálny čas vo vašom systéme.

Kliknite na OK. Bude spať 10 sekúnd. Môžete vidieť symbol medzipamäte.

Po 10 sekundách začne obnovovať kód, takže bude ukazovať konečný čas, tj po 10 sekundách aký je aktuálny čas.

Teraz môžete vidieť, že makro začalo o 10:54:14 a skončilo o 10:54:24, tj. Presný 10-sekundový rozdiel tam je. Za tých 10 sekúnd VBA pozastaví spustenie kódu.

Príklad č. 2 - Funkcia spánku v slučkách

Spánok sa najlepšie používa so slučkami vo VBA. Napríklad chcem vložiť sériové čísla od 1 do 10 pomocou slučky Do while vo VBA.

Po vložení jedného čísla by môj kód mal čakať 3 sekundy, takže keď slučka beží 10-krát, malo by to byť celkovo 30 sekúnd.

Kód:

Sub Sleep_Example2 () Dim k As Integer k = 1 Do While k <= 10 Cells (k, 1). Hodnota = kk = k + 1 Sleep (3000) '1000 milisekúnd je 1 sekunda, takže 3000 sa rovná 3 sekundám koniec slučky Sub

Spustite tento kód a na dokončenie procesu musíte počkať minimálne 30 sekúnd.

Na sledovanie presného času použite nasledujúci kód.

Kód:

Sub Sleep_Example2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Váš kód začal o" & StartTime k = 1 Robte kým k <= 10 buniek (k, 1). Hodnota = kk = k + 1 Spánok (3 000) „1 000 milisekund je 1 sekunda, takže 3 000 sa rovná 3 sekundám Loop EndTime = Čas MsgBox„ Váš kód skončil o “& EndTime End Sub

Tento kód zobrazí 2 schránky správ, v prvom bude uvedený začiatočný čas a v druhom bude uvedený konečný čas.

Poznámka: Počas spúšťania tohto kódu nemôžete používať program Excel. Ani únikový kľúč nebude fungovať.

Zaujímavé články...