VBA pauza | Pauzirajte VBA kod pomoću funkcije mirovanja i čekanja

Pauzirajte pokretanje VBA koda

VBA Pauza koristi se za zaustavljanje izvršenja koda određeno vrijeme i za zaustavljanje koda u VBA koristimo metodu application.wait.

Kada gradimo velike VBA projekte nakon izvođenja nečega, možda ćemo trebati pričekati neko vrijeme da obavimo druge zadatke. U takvim scenarijima kako zaustaviti makro kod da bi obavio svoj zadatak? VBA kôd možemo pauzirati na određeno vremensko razdoblje pomoću dvije funkcije, a one su "Wait" i "Sleep".

Kako zaustaviti kod pomoću metode čekanja?

"Čekaj" je funkcija koju koristimo u VBA da zadržimo makronaredbu pokrenutu određeno vrijeme. Primjenom ove funkcije moramo spomenuti do kada bi naš kod trebao pričekati.

Ovdje možete preuzeti ovaj VBA Pauza Excel predložak - VBA Pauza Excel Predložak

Na primjer, ako izvršavate kôd u 13:00:00 ako navedete vrijeme kao "13:15:00", tada će makronaredba ostati aktivna 15 minuta.

Sada, pogledajte argument funkcije WAIT u VBA.

U argumentu vremena moramo spomenuti u koje vrijeme bi naš kod trebao zastati ili pričekati.

Na primjer, pogledajte donji VBA kod.

Kodirati:

 Sub Pauza_Primjer1 () Raspon ("A1"). Vrijednost = "Zdravo" Raspon ("A2"). Vrijednost = "Dobrodošli" Aplikacija. Pričekajte ("13:15:00") Raspon ("A3"). Vrijednost = " Za VBA "Kraj Sub 

Zapamtite, dok izvodim ovaj kod, moje sistemsko vrijeme je 13:00:00, čim pokrenem kôd, izvršit će prva dva retka, tj.

Raspon ("A1"). Vrijednost = "Pozdrav" i Raspon ("A2"). Vrijednost = "Dobrodošli"

Ali ako pogledate sljedeći redak, piše Application.Wait ("13:15:00"), pa će nakon izvršavanja zadataka tih linija moj makro pauzirati 15 minuta, tj. Od 13:00:00 pričekat će dok moj sustav vrijeme doseže 13:15:01.

Jednom kada vrijeme sustava dosegne to vrijeme, izvršit će preostale retke koda.

Raspon ("A3"). Vrijednost = "Za VBA"

Međutim, ovo nije najbolji način vježbanja koda za pauzu, recimo da kôd pokrećete u različito vrijeme, tada trebamo koristiti NOW VBA funkciju s funkcijom TIME VALUE.

Sada funkcija vraća trenutni datum i vrijeme prema sustavu na kojem radimo.

Vrijednost funkcije VRIJEME zadržava vrijeme od 00:00:00 do 23:59:29.

Ok, pretpostavimo da moramo pauzirati kôd na 10 minuta kad god ga pokrenemo, a zatim možemo koristiti donji kod.

Kodirati:

 Sub Pauza_Primjer1 () Raspon ("A1"). Vrijednost = "Pozdrav" Raspon ("A2"). Vrijednost = "Dobrodošli" aplikacija. Pričekajte (Sada () + Vremenska vrijednost ("00:00:10")) Raspon (" A3 "). Value =" Za VBA "Kraj Sub 

Ovo je slično prethodnom kodu, ali jedina je razlika što smo dodali funkciju SADA I VRIJEME.

Kad god pokrenemo ovaj kod, on će zadržati ili zaustaviti izvršenje 10 minuta.

Kako pauzirati VBA kod pomoću metode spavanja?

Spavanje je složena funkcija u VBA-u jer nije ugrađena funkcija. Budući da nije ugrađen da bi ga učinili dostupnim za upotrebu, na vrh našeg modula moramo dodati donji kod.

Kodirati:

# Ako je VBA7 tada javno izjavite PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMillisekunde kao LongPtr) 'za 64-bitne sustave # Inače javno objavite Sub Sleep Lib "kernel32" (ByVal dwMilliseconds kao dugo) # End If' za 32 bitne sustave 

Jednostavno morate kopirati gornji kod i zalijepiti ga na vrh modula.

Razlog zašto trebamo dodati gornji kôd jer je SLEEP VBA funkcija predstavljena u Windows DLL datotekama, pa moramo deklarirati nomenklaturu prije nego započnemo potproceduru.

Ok, pogledajmo sada primjer funkcije SLEEP.

Kodirati:

 Sub Pauza_Primjer2 () Zatamni vrijeme početka kao niz Zatamni kraj vremena kao niz Početak vremena = vrijeme MsgBox StartTime stanje mirovanja (10000) Kraj vremena = vrijeme MsgBox Kraj vremena Kraj 

Prvo smo dvije varijable proglasili kao String.

 Priguši vrijeme početka kao niz Priguši vrijeme početka kao niz 

Tada smo dodijelili funkciju TIME excel varijabli StartTime. Funkcija TIME vraća trenutno vrijeme prema sustavu.

Vrijeme početka = Vrijeme

Zatim smo dodijelili isto za prikaz u okviru za poruku.

MsgBox StartTime

Tada sam primijenio funkciju SLEEP kao stanje spavanja (10000).

Ovdje je 10000 milisekundi što je jednako 10 sekundi u VBA.

Tada sam napokon dodijelio još jednu funkciju TIME varijabli EndTime .

Sad sam opet napisao kod za prikaz vremena.

Vrijeme završetka = Vrijeme

Ovo će pokazati razliku između vremena početka i završetka.

Sada ću izvršiti kod i vidjeti koliko je vrijeme početka.

Kada izvršim kôd, moje sistemsko vrijeme je 13:40:48 i sada će moj kôd spavati 10 sekundi. Na kraju, moje vrijeme je sljedeće.

Dakle, ovako, možemo zaustaviti izvršenje koda određeno vrijeme.