VBA funkcije čekanja i spavanja - VBA kôd pauze / odgode

Ovaj će vodič pokazati kako pauzirati / odgoditi kôd pomoću funkcija čekanja i mirovanja u VBA -i.

Kada stvaramo velike VBA programe koji izvode mnogo izračuna, ili možda čak i pozivaju vanjski program da se pokrene, možda ćemo zahtijevati da naš VBA kôd prestane raditi na određeno vrijeme dok se odvija vanjski proces. VBA ima na raspolaganju nekoliko metoda kako bi se to postiglo.

Uporaba metode Application.Wait Method

Ako moramo pauzirati pokretanje makronaredbe neko vrijeme ili dok se ne dosegne određeno vrijeme prije izvođenja sljedećeg koraka, možemo upotrijebiti Primjena.Čekajte metoda. To bi moglo biti korisno, na primjer, ako smo automatizirali postupak prijave na web stranicu i moramo pričekati nekoliko sekundi dok se stranica ne učita prije nego što se makro nastavi izvoditi.

Pričekajte 1 sekundu

Uključujući ovaj redak ispod u vašu makronaredbu, njegovo će se pokretanje pauzirati otprilike 1 sekundu:

1 Application.Wait (Sada + TimeValue ("0:00:01"))

Čekati do

U nekim ćete slučajevima morati pričekati do određenog vremena. S ovim redom ispod, vaša makronaredba neće se nastaviti prije 9 sati:

1 Prijava. Pričekajte "09:00:00"

Napominjemo da je Primjena.Čekajte ne prihvaća odgode manje od 1 sekunde.

VBA programiranje | Generator koda radi za vas!

Korištenje metode spavanja

Ako vam je potreban precizniji način pauziranja makronaredbe, možete upotrijebiti metodu mirovanja.

Spavanje je funkcija Windows API -ja, odnosno nije dio VBA. Može mu se pristupiti pomoću posebne izjave deklaracije.

Ako koristite 64-bitnu verziju sustava Microsoft Office, možete umetnuti sljedeću izjavu u novi modul ili na početak modula (ne izravno u potprogramu) u kojem želite koristiti funkciju mirovanja:

1 Javno deklarirajte PtrSafe Sub Sleep Lib "kernel32" (ByVal Milisekunde kao LongPtr)

S 32-bitnom verzijom koristite ovaj redak:

1 Javno proglasi Sub Sleep Lib "kernel32" (ByVal Milisekunde kao LongPtr)

Nakon što deklarirate funkciju mirovanja, imate pristup njoj u svojim potprogramima poput ovog:

1 Spavaj 10000

S ovim retkom iznad makro će biti pauziran 10.000 milisekundi, tj. 10 sekundi.

Korištenje petlje s Do Događajima

Veliki nedostatak korištenja metoda čekanja i mirovanja je što korisnik ne može učiniti ništa u Excelu dok čeka nastavak makronaredbe. Korisnici mogu pomisliti da je Excel prestao reagirati i dok ih korisnik tada može koristiti Ctl+Break da biste prekinuli makro, to poništava svrhu stavljanja pauze u makro za početak.

Da bismo prevladali ovaj problem, možemo koristiti petlju s metodom koja se zove DoEvents.

1234567 Javno podtestovanje ()Dim i As LongZa i = 1 do 20000Raspon ("A1"). Vrijednost = iDoEventsSljedeći iKraj podm

Sada, dok Excel pokreće gornju makronaredbu, korisnik može nastaviti s interakcijom s Excelom - možemo promijeniti kartice ili oblikovati ćelije na primjer - u osnovi, makro se nastavlja izvoditi, ali ekran programa Excel nije zamrznut. Sličnu bismo petlju mogli upotrijebiti za stvaranje vremenske funkcije u Excelu i ugradnju DoEvents način odmrzavanja zaslona dok je mjerač vremena u tijeku.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave