VBA pauzė - Pristabdykite VBA kodą naudodamiesi pristabdytosios veiksenos ir laukimo funkcija

Pristabdykite VBA kodo veikimą

„VBA Pause “ naudojama norint pristabdyti kodo vykdymą nurodytam laikui ir pristabdyti kodą VBA, kurį naudojame application.wait metodą.

Kai ką nors atlikę kuriame didelius VBA projektus, gali tekti šiek tiek palaukti, kol atliksime kitas užduotis. Kaip tokiais atvejais sustabdyti makrokodą, kad atliktume savo užduotį? Naudodami dvi funkcijas, mes galime pristabdyti VBA kodą nurodytam laikotarpiui. Šios funkcijos yra „Palaukti“ ir „Miego režimas“.

Kaip pristabdyti kodą naudojant laukimo metodą?

„Laukti“ yra funkcija, kurią naudojame VBA, kad makrokomanda veiktų tam tikrą laiką. Taikydami šią funkciją turime paminėti, iki kurio laiko mūsų kodas turėtų laukti.

Pvz., Jei kodą vykdote 13:00:00, jei laiką nurodote kaip „13:15:00“, makrokomanda veiks 15 minučių.

Dabar pažvelkite į WAIT funkcijos argumentą VBA.

Laiko argumente turime paminėti, kada mūsų kodas turėtų pristabdyti ar palaukti.

Pavyzdžiui, pažvelkite į žemiau esantį VBA kodą.

Kodas:

Papildomos pauzės_pavyzdys1 () diapazonas ("A1"). Reikšmė = "Sveiki" diapazonas ("A2"). Reikšmė = "Sveiki atvykę" programa. Palaukite ("13:15:00") Diapazonas ("A3"). Reikšmė = " Į VBA "Pabaigos sub

Atminkite, kad vykdant šį kodą mano sistemos laikas yra 13:00:00. Kai tik paleisiu kodą, jis vykdys pirmąsias dvi eilutes, t

Diapazonas ("A1"). Vertė = "Sveiki" ir diapazonas ("A2"). Reikšmė = "Sveiki atvykę"

Bet jei pažvelgsite į kitą eilutę, joje sakoma „Application.Wait“ („13:15:00“), taigi, atlikęs tas eilutės užduotis, mano makrokomanda bus pristabdyta 15 minučių, ty nuo 13:00:00, ji palauksiu, kol mano sistemos laikas pasieks 13:15:01.

Kai mano sistemos laikas pasieks tą laiką, ji vykdys likusias kodo eilutes.

Diapazonas ("A3"). Reikšmė = "Į VBA"

Tačiau tai nėra geriausias būdas praktikuoti pauzės kodą. Tarkime, kad kodą naudojate skirtingu metu, tada turime naudoti funkciją DABAR VBA su funkcija TIME VALUE.

Dabar funkcija grąžina esamą datą ir laiką pagal sistemą, kurioje dirbame.

„TIME Value“ funkcija laiko laiką nuo 00:00:00 iki 23:59:29.

Gerai, tarkime, kad mums reikia 10 minučių pristabdyti kodą, kai paleidžiame kodą, tada galime naudoti žemiau pateiktą kodą.

Kodas:

Papildomos pauzės_pavyzdys1 () diapazonas ("A1"). Reikšmė = "Sveiki" diapazonas ("A2"). Reikšmė = "Sveiki atvykę" programa. Palaukite (Dabar () + TimeValue ("00:00:10")) diapazonas (" A3 "). Reikšmė =" Į VBA "pabaigos sub

Tai panašu į ankstesnį kodą, tačiau vienintelis skirtumas yra tai, kad pridėjome funkciją DABAR IR LAIKO VERTĖ.

Kai vykdysime šį kodą, jis 10 minučių sustabdys arba pristabdys vykdymą.

Kaip pristabdyti VBA kodą naudojant miego metodą?

Miegas yra sudėtinga VBA funkcija, nes tai nėra įmontuota funkcija. Kadangi tai nėra įmontuotas, kad būtų galima jį naudoti, turime pridėti žemiau esantį kodą į savo modulio viršų.

Kodas:

#Jei VBA7 tada viešai paskelbti „PtrSafe Sub Sleep Lib“ „branduolys32“ (ByVal dwMilliseconds As LongPtr) '64 bitų sistemoms

Jūs tiesiog turite nukopijuoti aukščiau pateiktą kodą ir įklijuoti jį modulio viršuje.

Priežastis, kodėl turime pridėti pirmiau nurodytą kodą, nes SLEEP yra VBA funkcija, pateikta „Windows“ DLL failuose, todėl prieš pradėdami antrinę procedūrą turime deklaruoti nomenklatūrą.

Gerai, dabar pažvelkime į „SLEEP“ funkcijos pavyzdį.

Kodas:

Sub Pause_Pavyzdys2 () Užmiršti pradžios laiką kaip eilutę Įterpti pabaigos laiką kaip eilutę Pradžios laikas = Laikas MsgBox Pradinis laikas Miego režimas (10000) Pabaigos laikas = Laikas MsgBox Pabaigos laikas Pabaiga

Pirma, mes paskelbėme du kintamuosius kaip eilutę.

Pradžios laikas kaip eilutė

Tada „StartTime“ kintamajam priskyrėme funkciją TIME excel. LAIKO funkcija grąžina esamą laiką pagal sistemą.

StartTime = laikas

Tada mes paskyrėme tą patį rodyti pranešimų laukelyje.

„MsgBox“ pradžios laikas

Tada aš naudoju SLEEP funkciją kaip miego režimą (10000).

Čia 10000 yra milisekundės, o tai lygi 10 sekundžių VBA.

Tada pagaliau priskyriau dar vieną TIME funkciją kintamajam EndTime .

Dabar vėl parašiau kodą, kuris rodytų laiką.

Pabaigos laikas = laikas

Tai parodys skirtumą tarp pradžios laiko ir pabaigos laiko.

Dabar įvykdysiu kodą ir pamatysiu, koks yra pradžios laikas.

Kai vykdau kodą, mano sistemos laikas yra 13:40:48, o dabar mano kodas miegos 10 sekundžių. Galų gale mano laikas yra toks.

Taigi, tokiu būdu, mes galime pristabdyti kodo vykdymą tam tikrą laiką.

Įdomios straipsniai...