VBA Vent og sove -funksjoner - Pause / forsink VBA -kode

Denne opplæringen vil demonstrere hvordan du stopper / forsinker kode ved hjelp av Vent og hvil -funksjonene i VBA.

Når vi lager store VBA -programmer som utfører mange beregninger, eller kanskje til og med kaller et eksternt program til å kjøre, kan vi kreve at VBA -koden slutter å kjøre i en bestemt tid mens den eksterne prosessen pågår. VBA har noen få tilgjengelige metoder for å oppnå dette.

Bruk av Application.Wait -metode

Hvis vi trenger å stoppe makroen vår en stund eller til en bestemt tid er nådd før vi utfører det neste trinnet, kan vi bruke Søknad. Vent metode. Dette kan for eksempel være nyttig hvis vi har automatisert en påloggingsprosess til et nettsted og må vente noen sekunder til siden er lastet inn før makroen fortsetter å kjøre.

Vent 1 sekund

Inkludert denne linjen nedenfor i makroen, vil kjøringen bli stoppet i omtrent 1 sekund:

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

Vent til

I noen tilfeller må du vente til et bestemt tidspunkt. Med denne linjen under vil makroen din ikke fortsette før kl. 9:

1 Søknad.Vent "09:00:00"

Vær oppmerksom på at Søknad. Vent godtar ikke forsinkelser på mindre enn 1 sekund.

VBA -programmering | Kodegenerator fungerer for deg!

Bruk av søvnmetode

Hvis du trenger en mer presis måte å stoppe makroen på, kan du bruke Sleep -metoden.

Søvn er en Windows API -funksjon, det vil si at den ikke er en del av VBA. Den kan nås ved å bruke en spesiell erklæring.

Hvis du bruker 64-biters versjon av Microsoft Office, kan du sette inn følgende setning i en ny modul eller i begynnelsen av modulen (ikke direkte i delprogrammet) du vil bruke hvilemodusfunksjonen i:

1 Offentlig erklære PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Med 32-biters versjon, bruk denne linjen:

1 Offentlig erklærer Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Etter å ha erklært hvilefunksjonen, har du tilgang til den i underrutinene slik:

1 Sov 10000

Med denne linjen over vil makroen bli stoppet i 10 000 millisekunder, det vil si 10 sekunder.

Bruke en Loop med Do -hendelser

Den store ulempen ved å bruke Vent og hvil -metodene er at brukeren ikke kan gjøre noe i Excel mens han venter på at makroen skal fortsette. En bruker kan tro at Excel har sluttet å svare, og mens brukeren deretter kan bruke Ctl+pause for å avbryte makroen, beseirer dette formålet med å sette en pause i makroen til å begynne med.

For å overvinne dette problemet kan vi bruke en loop med en metode som heter DoEvents.

1234567 Offentlig undersøkelse ()Dim i As LongFor i = 1 Til 20000Område ("A1"). Verdi = iDoEventsNeste jegSlutt Sub

Nå, mens Excel kjører makroen ovenfor, kan brukeren fortsette å samhandle med Excel - vi kan for eksempel endre faner eller formatere celler - i utgangspunktet fortsetter makroen, men Excel -skjermen er ikke frossen. Vi kan bruke en lignende sløyfe til å lage en timerfunksjon i Excel og inkorporere DoEvents metode for å frigjøre skjermen mens timeren kjører.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave