Excel VBA funkcija spavanja 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 broj 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, kao što i samo ime kaže, "spavajte neko vrijeme", "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 to, 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. Umjesto toga, imamo funkciju zvanu Spavanje kao funkciju prozora. Unosom posebnog skupa kodova, ovu funkciju zapravo možemo pozvati u VBA. Zapravo je to funkcija prisutna u Windows DLL datotekama, pa moramo proglasiti nomenklaturu API-ja prije početka potprograma u VBA.

Ispod je VBA kôd.

Kodirati:

#Ako VBA7 tada javno izjavi PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Za 64-bitne verzije programa Excel #Else Javno izjavi Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' za 32-bitne verzije Excel # Završi ako

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.

Primjer # 1

Jednom kada je API kod zalijepljen prije početka Sub postupka, stvorite ime makronaredbe.

Kodirati:

#Sub Sleep_Example1 () End 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, zaustavlja kôd u milisekundama, tako da pauzira 10 sekundi. Moramo iskoristiti 10000 milisekundi.

Kodirati:

Sub Sleep_Example1 () Zatamni vrijeme početka kao niz Zatamni vrijeme završetka 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) Kraj vremena = Vrijeme MsgBox Kraj vremena Sub

Sada će dvije varijable StartTime i EndTime sadržavati vrijeme početka i završetka makronaredbi. Pokreni ovu makronaredbu; isprva ćemo vidjeti vrijeme početka makronaredbi, 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 nastaviti, tako da će pokazivati ​​vrijeme završetka, tj., Nakon 10 sekundi čekanja, koje je trenutno vrijeme.

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

Spavanje se najbolje koristi s petljama u VBA. Na primjer, želim umetnuti serijske brojeve od 1 do 10 pomoću petlje Do while u VBA.

Nakon umetanja jednog broja, moj bi kod trebao pričekati 3 sekunde, tako da kada se petlja pokrene 10 puta, to bi trebalo biti ukupno 30 sekundi.

Kodirati:

Sub Sleep_Example2 () Dim k As Integer k = 1 Do While k <= 10 Cell (k, 1) .Value = kk = k + 1 Sleep (3000) '1000 milisekundi je 1 sekunda pa je 3000 jednako 3 sekunde Loop End Pod

Pokrenite ovaj kôd i morate pričekati najmanje 30 sekundi da biste dovršili postupak.

Da biste pratili točno vrijeme, upotrijebite donji kod.

Kodirati:

Sub Sleep_Example2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Vaš kôd započet" & StartTime k = 1 Do While k <= 10 ćelija (k, 1) .Vrijednost = kk = k + 1 stanje mirovanja (3000) '1000 milisekundi je 1 sekunda, tako da je 3000 jednako 3 sekunde Loop EndTime = Time MsgBox "Vaš kôd završen u" & EndTime End Sub

Ovaj će vam kôd prikazati 2 okvira za poruke, prvi će pokazati vrijeme početka, a drugi vrijeme završetka.

Napomena: Tijekom izvođenja ovog koda ne možete koristiti excel. Čak ni tipka za bijeg neće raditi.

Zanimljivi članci...