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 statome didelius VBA projektus atlikę kažką, gali tekti šiek tiek palaukti, kol atliksime kitas užduotis. Tokiais atvejais kaip pristabdyti makrokodą, kad atliktume savo užduotį? Naudodami dvi funkcijas, mes galime pristabdyti VBA kodą nurodytam laikotarpiui ir š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.

Šį „VBA Pause Excel“ šabloną galite atsisiųsti čia - „VBA Pause Excel“ šablonas

Pavyzdžiui, jei vykdote kodą 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, ty

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

Bet jei pažvelgsite į kitą eilutę, ji sako „Application.Wait“ („13:15:00“), taigi, atlikus šias eilutės užduotis, mano makrokomanda bus pristabdyta 15 minučių, ty nuo 13:00:00 ji laukia, kol mano sistema laikas pasiekia 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 pauzės kodo praktikavimo būdas, tarkime, kad kodą naudojate skirtingu metu, tada turime naudoti funkciją DABAR VBA su funkcija LAIKO VERTĖ.

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 paleidžiame šį kodą, vykdymas bus sustabdytas arba pristabdytas 10 minučių.

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 naudotis, turime pridėti žemiau esantį kodą į savo modulio viršų.

Kodas:

# Jei VBA7, tada viešai paskelbkite „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 miego funkciją SLEEP (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 aš vykdau kodą, mano sistemos laikas yra 13:40:48, o dabar mano kodas miegos 10 sekundžių. Pabaigoje mano laikas toks.

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


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