VBA Vent & Sleep -funktioner - Pause / forsink VBA -kode

Denne vejledning viser, hvordan du sætter en pause / forsinker kode ved hjælp af Vent og hvil -funktionerne i VBA.

Når vi opretter store VBA -programmer, der udfører mange beregninger, eller måske endda kalder eksternt program for at køre, kan vi kræve, at vores VBA -kode stopper med at køre i et bestemt tidsrum, mens den eksterne proces finder sted. VBA har et par metoder til rådighed for at opnå dette.

Brug af Application.Wait metode

Hvis vi har brug for at sætte vores makro i gang et stykke tid, eller indtil et bestemt tidspunkt er nået, før vi udfører det næste trin, kan vi bruge Ansøgning. Vent metode. Dette kan f.eks. Være nyttigt, hvis vi har automatiseret en loginproces til et websted og skal vente nogle sekunder, indtil siden er indlæst, før vores makro fortsætter med at køre.

Vent 1 sekund

Inklusive denne linje nedenfor i din makro, vil dens kørsel blive sat på pause i cirka 1 sekund:

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

Vent indtil

I nogle tilfælde skal du vente til et bestemt tidspunkt. Med denne linje nedenfor vil din makro ikke fortsætte før kl. 9:

1 Ansøgning.Vent "09:00:00"

Bemærk venligst, at Ansøgning. Vent accepterer ikke forsinkelser på mindre end 1 sekund.

VBA -programmering | Kodegenerator virker for dig!

Brug af søvnmetode

Hvis du har brug for en mere præcis måde at sætte din makro på pause, kan du bruge Sleep -metoden.

Sleep er en Windows API -funktion, det vil sige, at den ikke er en del af VBA. Den kan tilgås ved hjælp af en særlig erklæring.

Hvis du bruger 64-bit versionen af ​​Microsoft Office, kan du indsætte følgende sætning i et nyt modul, eller i starten af ​​modulet (ikke direkte i underprogrammet) vil du bruge dvalefunktionen i:

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

Med 32-bit version skal du bruge denne linje:

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

Efter at have erklæret søvnfunktionen, har du adgang til den i dine underprogrammer som denne:

1 Sov 10000

Med denne linje over vil din makro blive sat på pause i 10.000 millisekunder, dvs. 10 sekunder.

Brug af en Loop med Do -begivenheder

Den store ulempe ved at bruge Vent og hvil -metoderne er, at brugeren ikke kan gøre noget i Excel, mens han venter på, at makroen fortsætter. En bruger kunne tro, at Excel er holdt op med at svare, og mens brugeren derefter kan bruge Ctl+pause for at afbryde makroen, besejrer dette formålet med at sætte en pause i makroen til at begynde med.

For at overvinde dette problem kan vi bruge en loop med en metode kaldet DoEvents.

1234567 Public Sub Test ()Dim i så længeFor i = 1 Til 20000Område (“A1”). Værdi = iDoEventsNæste iAfslut Sub

Mens Excel kører makroen ovenfor, kan brugeren fortsætte med at interagere med Excel - vi kan f.eks. Ændre faner eller formatere celler - grundlæggende kører makroen fortsat, men Excel -skærmen er ikke frosset. Vi kunne bruge en lignende sløjfe til at oprette en timerfunktion i Excel og inkorporere DoEvents metode til at frigøre skærmen, mens timeren kører.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave