Excel VBA funkcija mirovanja za pauziranje vašeg makro koda

Excel VBA funkcija spavanja

VBA funkcija spavanja je Windows funkcija prisutna u Windows DLL datotekama koja se koristi za zaustavljanje ili pauziranje pokretanja postupka makronaredba određeno vrijeme nakon što određeni iznos možemo nastaviti s programom.

Postoje situacije u kojima trebamo pauzirati postupak pokretanja makronaredbi da bismo dovršili druge skupove zadataka. Ostali skupovi zadataka mogu biti dio našeg kodiranja ili dio druge makro procedure ili mogu biti ulazni podaci za trenutnu excel makronaredbu. Kako možete pauzirati program dok je pokrenut? Kodeks postupka možemo pauzirati neko vrijeme koje je odredio korisnik, a nakon toga određeni iznos možemo nastaviti s programom. To možemo učiniti u VBA pomoću funkcije SLEEP.

Što radi VBA funkcija spavanja?

SPAVAJTE kako samo ime kaže "neko vrijeme spavajte", "odmorite se neko vrijeme", "pauzirajte neko vrijeme", neko vrijeme odmarajte "itd. Funkcija spavanja omogućuje korisnicima da pauziraju naš makro kod na milisekunde. Koristeći ovo možemo odgoditi postupak makro koda.

Ako mislite da imamo ugrađenu funkciju koja se zove SLEEP, varate se jer u VBA ne postoji takva funkcija, već imamo funkciju zvanu Spavanje kao Windows funkciju. Unosom posebnog skupa koda možemo zapravo pozvati ovu funkciju u VBA. Zapravo je to funkcija prisutna u Windows DLL datotekama, tako da moramo proglasiti nomenklaturu API-ja prije početka potprograma u vba.

Ispod je VBA kôd.

Kodirati:

# Ako VBA7 tada javno objavi PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Za 64-bitne verzije programa Excel # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Za 32-bitne verzije Excel # End If 

Kopirajte gore navedeno i zalijepite u svoj modul prije nego što započnete s pisanjem makro kodova. Trebao bi biti zalijepljen ovako u vaš modul.

Primjer

Prije nego što vam pokažem način pisanja koda, dopustite mi da vam kažem nešto više o funkciji spavanja. Odgađa postupak u milisekundama. Dakle, 1 sekunda je jednaka 1000 milisekundi, ako želite pauzirati 10 sekundi, to bi trebalo biti 10000 milisekundi.

Ovaj VBA Sleep Excel predložak možete preuzeti ovdje - VBA Sleep Excel Predložak

Primjer # 1

Nakon što API kod zalijepite prije početka Sub postupka, stvorite ime makronaredbe.

Kodirati:

# Sub Sleep_Example1 () Kraj Sub 

Deklarirajte dvije varijable kao niz.

Kodirati:

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

Za varijablu StartTime dodijelite vrijednost funkcije TIME. Napomena: TIME u excel funkciji vraća trenutno vrijeme.

Kodirati:

Vrijeme početka = Vrijeme

Sada ćemo ovu poruku prikazati u okviru za poruke VBA.

Kodirati:

StartTime = Vrijeme MsgBox StartTime

Sada ćemo pauzirati kod na 10 sekundi pomoću funkcije spavanja. Kao što sam rekao, zastaje kod u milisekundama, pa da bismo napravili pauzu od 10 sekundi, trebamo iskoristiti 10000 milisekundi.

Kodirati:

 Sub Sleep_Example1 () Zatamni vrijeme početka kao niz Zatamni kraj vremena kao niz StartTime = vrijeme MsgBox vrijeme početka spavanja (10000) Kraj pod 

Sada upotrijebite drugu varijablu EndTime i dodijelite trenutno vrijeme.

Kodirati:

 Sub Sleep_Example1 () Zatamni vrijeme početka kao niz Zatamni kraj vremena kao niz StartTime = vrijeme MsgBox StartTime stanje mirovanja (10000) EndTime = vrijeme MsgBox Kraj vremena Kraj 

Sada će dvije varijable StartTime i EndTime sadržavati vrijeme početka i završetka makronaredbe. Pokrenite ovu makronaredbu, isprva ćemo vidjeti vrijeme početka makronaredbe, tj. Trenutno vrijeme u vašem sustavu.

Kliknite U redu, spavat će 10 sekundi. Možete vidjeti simbol međuspremnika.

Nakon 10 sekundi počet će kôd nastavljati, tako da će se prikazivati ​​vrijeme završetka, tj. Nakon 10 sekundi čekanja, koliko je trenutno vremena sada.

Sada možete vidjeti da je makro započeo u 10:54:14 i završio u 10:54:24 tj. Točno je razlika od 10 sekundi. U tih 10 sekundi VBA zaustavi pokretanje koda.

Primjer # 2 - Funkcija spavanja u petljama

Sleep is best used with loops in VBA. For example, I want to insert serial numbers from 1 to 10 using Do while loop in VBA.

After inserting the one number my code should wait for 3 seconds, so when the loop runs for 10 times it should be 30 seconds in total.

Code:

 Sub Sleep_Example2() Dim k As Integer k = 1 Do While k <= 10 Cells(k, 1).Value = k k = k + 1 Sleep (3000) '1000 milliseconds is 1 second so 3000 is equal to 3 seconds Loop End Sub 

Run this code and you have to wait for a minimum of 30 seconds to complete the process.

To track the exact time use the below code.

Code:

 Sub Sleep_Example2() Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Your Code Started at " & StartTime k = 1 Do While k <= 10 Cells(k, 1).Value = k k = k + 1 Sleep (3000) '1000 milliseonds is 1 second so 3000 is equal to 3 seconds Loop EndTime = Time MsgBox "Your Code Ended at " & EndTime End Sub 

This code will display you 2 message box, the first one will show the starting time and the second one will show the end time.

Note: While running this code, you cannot use excel, even the escape key will not work.