Premor VBA | Začasno zaustavite kodo VBA s funkcijo spanja in čakanja

Začasno zaustavite delovanje kode VBA

VBA Pause se uporablja za zaustavitev izvajanja kode za določen čas in za zaustavitev kode v VBA uporabljamo metodo application.wait.

Ko gradimo velike projekte VBA, potem ko izvedemo nekaj, bomo morda morali počakati nekaj časa, da opravimo druge naloge. Kako v takšnih scenarijih zaustavimo kodo makra, da opravi svojo nalogo? Kodo VBA lahko zaustavimo za določeno časovno obdobje z uporabo dveh funkcij, ki sta »Čakanje« in »Spanje«.

Kako zaustaviti kodo z uporabo metode čakanja?

»Čakanje« je funkcija, ki jo v VBA uporabljamo za zadrževanje makra, ki deluje določen čas. Z uporabo te funkcije moramo omeniti, do kdaj naj naša koda počaka.

To predlogo VBA Pause Excel lahko prenesete tukaj - VBA Pause Excel Predloga

Če na primer izvajate kodo ob 13:00:00, če navedete čas kot »13:15:00«, bo makro deloval 15 minut.

Zdaj pa poglejte argument funkcije WAIT v VBA.

V argumentu s časom moramo omeniti, kdaj naj se naša koda zaustavi ali počaka.

Na primer, poglejte spodnjo kodo VBA.

Koda:

 Sub Pause_Example1 () Obseg ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " V VBA "End Sub 

Ne pozabite, da je med izvajanjem te kode moj sistemski čas 13:00:00, takoj ko zaženem kodo, bo izvedla prvi dve vrstici, tj.

Obseg ("A1"). Value = "Hello" & Range ("A2"). Value = "Welcome"

Če pa pogledate naslednjo vrstico, piše Application.Wait (“13:15:00”), tako da bo moj makro po izvedbi teh vrstic 15 minut zaustavljen, tj. Od 13:00:00 bo počakal, dokler moj sistem čas doseže 13:15:01.

Ko moj sistemski čas doseže ta čas, bo izvedel preostale vrstice kode.

Obseg ("A3"). Vrednost = "VBA"

Vendar to ni najboljši način za izvajanje kode za zaustavitev, recimo, da jo izvajate v različnih časih, potem moramo uporabiti funkcijo NOW VBA s funkcijo TIME VALUE.

Funkcija Now vrne trenutni datum in čas glede na sistem, na katerem delamo.

Funkcija TIME Value ima čas od 00:00:00 do 23:59:29.

Ok, predpostavimo, da moramo kodo začasno ustaviti za 10 minut, kadar koli jo zaženemo, potem lahko uporabimo spodnjo kodo.

Koda:

 Sub Pause_Example1 () Obseg ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Value =" VBA "End Sub 

To je podobno prejšnji kodi, edina razlika pa je, da smo dodali funkcijo NOW & TIME VALUE.

Vsakič, ko zaženemo to kodo, zadrži ali zaustavi izvajanje 10 minut.

Kako zaustaviti kodo VBA z uporabo metode spanja?

Spanje je v VBA zapletena funkcija, ker ni vgrajena funkcija. Ker ni vgrajena, da bi jo lahko uporabili, moramo na vrh modula dodati spodnjo kodo.

Koda:

# Če VBA7 potem javno izjavi PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'za 64-bitne sisteme # Drugače objavi Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) # End If' za 32-bitne sisteme 

Prekopirati morate zgoraj navedeno kodo in jo prilepiti na vrh modula.

Razlog, zakaj moramo dodati zgornjo kodo, ker je SLEEP funkcija VBA, predstavljena v datotekah Windows DLL, zato moramo nomenklaturo razglasiti, preden začnemo s podproceduro.

Ok, poglejmo zdaj primer funkcije SLEEP.

Koda:

 Sub Pause_Example2 () Dim StartTime kot niz Dim Dim EndTime kot niz StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Najprej smo dve spremenljivki razglasili za niz.

 Zatemni čas začetka kot niz Zatemni čas začetka kot niz 

Nato smo spremenljivki StartTime dodelili funkcijo TIME excel. Funkcija TIME vrne trenutni čas po sistemu.

StartTime = Čas

Nato smo isto določili za prikaz v polju za sporočila.

MsgBox StartTime

Potem sem funkcijo SLEEP uporabil kot spanje (10000).

Tu je 10000 milisekund, kar je v VBA 10 sekund.

Potem sem nazadnje spremenljivki EndTime dodelil še eno funkcijo TIME .

Zdaj sem spet napisal kodo, ki prikazuje čas.

EndTime = čas

To bo pokazalo razliko med začetnim in končnim časom.

Zdaj bom izvedel kodo in videl, kakšen je začetni čas.

Ko zaženem kodo, je moj sistemski čas 13:40:48 in zdaj bo moja koda spala 10 sekund. Na koncu je moj čas naslednji.

Tako lahko tako zaustavimo izvajanje kode za določen čas.