VBA-pause | Sæt VBA-kode på pause ved hjælp af dvaletilstand og ventefunktion

Sæt VBA-kode på pause, når den kører

VBA Pause bruges til at sætte koden på pause fra at udføre den i et bestemt tidsrum og til at sætte en kode på pause i VBA bruger vi application.wait-metoden.

Når vi bygger store VBA-projekter efter at have udført noget, skal vi muligvis vente et stykke tid på at udføre andre opgaver. I sådanne scenarier, hvordan sætter vi makrokoden på pause for at udføre vores opgave? Vi kan sætte VBA-koden på pause i en bestemt tidsperiode ved at bruge to funktioner, og disse funktioner er "Vent" og "Dvale".

Hvordan sætter jeg kode på pause ved hjælp af ventemetode?

“Vent” er den funktion, vi bruger i VBA til at holde makroen kørende i et bestemt tidsrum. Ved at anvende denne funktion skal vi nævne, indtil hvilket tidspunkt vores kode skal vente.

Du kan downloade denne VBA Pause Excel-skabelon her - VBA Pause Excel-skabelon

Hvis du f.eks. Udfører koden kl. 13:00:00, hvis du angiver tiden som "13:15:00", holder den makroen i 15 minutter.

Se nu på argumentet om WAIT-funktion i VBA.

I tidsargument skal vi nævne, hvornår vores kode skal stoppe eller vente.

Se for eksempel på nedenstående VBA-kode.

Kode:

 Underpause_eksempel1 () Område ("A1"). Værdi = "Hej" Område ("A2"). Værdi = "Velkommen" Ansøgning. Vent ("13:15:00") Område ("A3"). Værdi = " Til VBA "End Sub 

Husk, at når min kørsel kører, er min systemtid 13:00:00, så snart jeg kører koden, vil den udføre de to første linjer, dvs.

Område ("A1"). Værdi = "Hej" & Område ("A2"). Værdi = "Velkommen"

Men hvis du ser på den næste linje, står der Application.Wait (“13:15:00”), så efter at have udført disse linjearbejde, vil min makro blive sat på pause i 15 minutter, dvs. fra 13:00:00 vil den vente til mit system tiden når 13:15:01.

Når min systemtid når det tidspunkt, vil den udføre de resterende kodelinjer.

Område ("A3"). Værdi = "Til VBA"

Dette er dog ikke den bedste måde at øve pausekoden på, lad os sige, at du kører koden på forskellige tidspunkter, så er vi nødt til at bruge NU VBA-funktionen med TIDSVÆRDI-funktionen.

Nu- funktionen returnerer den aktuelle dato og tid ifølge det system, vi arbejder på.

TIME-værdi- funktionen holder tiden fra 00:00:00 til 23:59:29.

Ok, antag, at vi skal pause koden i 10 minutter, når vi kører koden, så kan vi bruge nedenstående kode.

Kode:

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

Dette svarer til tidligere kode, men den eneste forskel er, at vi har tilføjet NU & TIDSVÆRDI-funktionen.

Hver gang vi kører denne kode, holder den eller sætter den i pause i 10 minutter.

Hvordan pause VBA-koden ved hjælp af søvnmetode?

Søvn er en kompliceret funktion i VBA, fordi den ikke er en indbygget funktion. Da det ikke er en indbygget for at gøre det tilgængeligt til brug, er vi nødt til at tilføje nedenstående kode til toppen af ​​vores modul.

Kode:

# Hvis VBA7 derefter offentlig erklære PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) # End If' For 32 Bit Systems 

Du skal bare kopiere ovenstående kode og indsætte den øverst i modulet.

Årsagen til, at vi skal tilføje ovenstående kode, fordi SLEEP er en VBA-funktion, der præsenteres i Windows DLL-filer, så vi er nødt til at erklære nomenklaturen, før vi starter underproceduren.

Ok, lad os se på eksemplet på SLEEP-funktion nu.

Kode:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

For det første har vi deklareret to variabler som streng.

 Dim StartTime As String Dim EndTime As String 

Derefter har vi tildelt TIME excel-funktionen til StartTime-variablen. TIME-funktionen returnerer den aktuelle tid pr. System.

StartTime = Tid

Så har vi tildelt det samme, der skal vises i meddelelsesfeltet.

MsgBox Starttid

Så har jeg anvendt SLEEP-funktion som Sleep (10000).

Her er 10000 millisekunder, hvilket er lig med 10 sekunder i VBA.

Derefter har jeg endelig tildelt variablen EndTime den ene TIME-funktion .

Nu igen har jeg skrevet en kode for at vise klokkeslættet.

EndTime = Tid

Dette viser forskellen mellem starttid og sluttid.

Nu vil jeg udføre koden og se, hvad starttiden er.

Når jeg udfører koden, er min systemtid 13:40:48, og nu vil min kode sove i 10 sekunder. I slutningen er min tid som følger.

Så som dette kan vi sætte koden i pause fra at udføre den i et bestemt tidsrum.