VBA paus | Peatage VBA-kood puhke- ja ootefunktsiooni abil

Peatage VBA-koodi käitamine

VBA pausi kasutatakse koodi täitmise peatamiseks määratud aja jooksul ja koodi peatamiseks VBA-s, mida kasutame meetodil application.wait.

Kui ehitame pärast millegi sooritamist suuri VBA-projekte, peame võib-olla teiste ülesannete täitmiseks mõnda aega ootama. Kuidas peatada sellistes stsenaariumides makrokoodi oma ülesande täitmiseks? Saame peatada VBA-koodi määratud ajaperioodiks, kasutades kahte funktsiooni ja need funktsioonid on “Oota” ja “Une”.

Kuidas ooterežiimi abil koodi peatada?

"Oota" on funktsioon, mida kasutame VBA-s makro töötamiseks kindla aja jooksul. Selle funktsiooni rakendamisel peame mainima, mis ajani peaks meie kood ootama.

Selle VBA Pause Exceli malli saate alla laadida siit - VBA Pause Exceli mall

Näiteks kui täidate koodi kell 13:00:00, kui sisestate kellaajaks „13:15:00”, hoiab see makro töötamist 15 minutit.

Nüüd vaadake funktsiooni WAIT argumenti VBA-s.

Ajalises argumendis peame mainima, millal peaks meie kood peatuma või ootama.

Näiteks vaadake allpool olevat VBA-koodi.

Kood:

 Alampausi_näide1 () vahemik ("A1"). Väärtus = "Tere" vahemik ("A2"). Väärtus = "Tere tulemast" rakendus. Oodake ("13:15:00") Vahemik ("A3"). Väärtus = " VBA-le "Lõpp-alam 

Pidage meeles, et selle koodi käivitamisel on minu süsteemiaeg 13:00:00, niipea kui koodi käivitan, käivitab see kaks esimest rida

Vahemik ("A1"). Väärtus = "Tere" ja vahemik ("A2"). Väärtus = "Tere tulemast"

Kuid kui vaatate järgmist rida, siis on kirjas Application.Wait (“13:15:00”), nii et pärast nende ridade ülesannete täitmist peatatakse minu makro 15 minutit, st alates 13:00:00 ootab see, kuni mu süsteem aeg jõuab 13:15:01.

Kui mu süsteemi aeg saabub, täidab ta ülejäänud koodiread.

Vahemik ("A3"). Väärtus = "VBA-le"

Kuid see pole parim viis pausikoodi harjutamiseks, oletame, et käitate koodi erinevatel aegadel, siis peame kasutama funktsiooni NÜÜD VBA funktsiooniga TIME VALUE.

Funktsioon Now tagastab praeguse kuupäeva ja kellaaja vastavalt süsteemile, millega töötame.

Funktsioon TIME Value hoiab aega vahemikus 00:00:00 kuni 23:59:29.

Olgu, oletame, et peame koodi käivitamisel 10 minutit peatama, siis saame kasutada allolevat koodi.

Kood:

 Alampausi_näide1 () vahemik ("A1"). Väärtus = "Tere" vahemik ("A2"). Väärtus = "Tere tulemast" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Väärtus =" VBA-le "lõpp-alam 

See sarnaneb eelmise koodiga, kuid ainus erinevus on see, et oleme lisanud funktsiooni KOHE & AJA VÄÄRTUS.

Alati, kui me seda koodi käivitame, hoiab see täitmise 10 minutit kinni või peatab selle.

Kuidas peatada VBA-kood unerežiimi abil?

Uni on VBA-s keeruline funktsioon, kuna see pole sisseehitatud funktsioon. Kuna see pole kasutamiseks sisseehitatud, peame lisama allpool oleva koodi oma mooduli ülaossa.

Kood:

# Kui VBA7, siis avalik deklareerige PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) "64-bitiste süsteemide jaoks # Muu avalik deklareerige Sub Sleep Lib" kernel32 "(ByVal dwMillisekundid nii kaua) # End If" 32-bitiste süsteemide jaoks 

Peate lihtsalt kopeerima ülaltoodud koodi ja kleepima selle mooduli ülaossa.

Põhjus, miks peame ülaltoodud koodi lisama, kuna SLEEP on Windowsi DLL-failides esitatav VBA-funktsioon, peame enne alamprotseduuri alustamist deklareerima nomenklatuuri.

Ok, vaatame nüüd funktsiooni SLEEP näidet.

Kood:

 Alam Paus_Näide2 () Dim StartTime stringina Dim EndTime as String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Esiteks oleme deklareerinud stringiks kaks muutujat.

 Hämarda algusaeg stringina Hämarda lõpuaeg stringina 

Seejärel määrasime muutujale StartTime funktsiooni TIME excel. Funktsioon TIME tagastab praeguse kellaaja vastavalt süsteemile.

StartTime = aeg

Siis oleme määranud sama, mida kuvatakse sõnumikastis.

MsgBox StartTime

Siis olen rakendanud SLEEP-funktsiooni unerežiimina (10000).

Siin on 10000 millisekundit, mis võrdub 10 sekundiga VBA-s.

Siis lõpuks omistasin muutujale EndTime veel ühe funktsiooni TIME .

Nüüd olen jälle aja kuvamiseks koodi kirjutanud.

EndTime = aeg

See näitab erinevust algus- ja lõpuaja vahel.

Nüüd täidan koodi ja vaatan, mis on algusaeg.

Koodi käivitamisel on minu süsteemiaeg 13:40:48 ja nüüd magab kood 10 sekundit. Lõpus on minu aeg järgmine.

Niisiis võime nii peatada koodi käivitamise määratud aja jooksul.


$config[zx-auto] not found$config[zx-overlay] not found