VBA laukimo ir miego funkcijos - pristabdyti / atidėti VBA kodą

Ši pamoka parodys, kaip pristabdyti / atidėti kodą naudojant VBA laukimo ir miego funkcijas.

Kai sukuriame dideles VBA programas, kurios atlieka daug skaičiavimų, o gal net iškviečiame paleisti išorinę programą, galime reikalauti, kad mūsų VBA kodas nustotų veikti tam tikrą laiką, kol vyksta išorinis procesas. VBA turi keletą būdų, kaip tai pasiekti.

Programos naudojimas. Palaukite

Jei prieš atlikdami kitą veiksmą mums reikia kurį laiką pristabdyti makrokomandos veikimą arba kol bus pasiektas nurodytas laikas, galime naudoti Taikymas. Palaukite metodas. Tai gali būti naudinga, pavyzdžiui, jei mes automatizavome prisijungimo prie svetainės procesą ir turime palaukti kelias sekundes, kol puslapis bus įkeltas, kol mūsų makrokomanda toliau veiks.

Palaukite 1 sekundę

Įtraukus šią eilutę į makrokomandą, jos veikimas bus pristabdytas maždaug 1 sekundei:

1 Application.Wait (Dabar + TimeValue ("0:00:01"))

Palauk iki

Kai kuriais atvejais turėsite palaukti tam tikro laiko. Jei ši eilutė yra žemiau, makrokomanda nebus tęsiama iki 9 val.

1 Paraiška. Palaukite "09:00:00"

Atkreipkite dėmesį, kad Taikymas. Palaukite nepriima trumpesnių nei 1 sekundės vėlavimų.

VBA programavimas | Kodo generatorius jums tinka!

Miego metodo naudojimas

Jei jums reikia tikslesnio makrokomandos pristabdymo būdo, galite naudoti miego režimą.

Miego režimas yra „Windows“ API funkcija, tai yra, ji nėra VBA dalis. Jį galima pasiekti naudojant specialų deklaracijos pareiškimą.

Jei naudojate 64 bitų „Microsoft Office“ versiją, galite įterpti šį teiginį į naują modulį arba jo pradžioje (ne tiesiai į paprogramę), kurioje norite naudoti miego funkciją:

1 Viešai paskelbti „PtrSafe Sub Sleep Lib“ „kernel32“ (ByVal Millisekundės kaip LongPtr)

Naudodami 32 bitų versiją, naudokite šią eilutę:

1 Viešai paskelbti „Sub Sleep Lib“ „kernel32“ (ByVal Millisekundės kaip LongPtr)

Paskelbus miego funkciją, jūs turite prieigą prie jos tokiose paprogramėse:

1 Miegokite 10 000

Jei ši eilutė virš jūsų makrokomandos bus pristabdyta 10 000 milisekundžių, t. Y. 10 sekundžių.

Ciklo naudojimas su „Do Events“

Didelis „Wait“ ir „Sleep“ metodų naudojimo trūkumas yra tas, kad vartotojas negali nieko padaryti „Excel“, laukdamas makrokomandos tęsimo. Vartotojas gali pagalvoti, kad „Excel“ nustojo reaguoti ir vartotojas gali tuo naudotis Ctl+pertrauka norint nutraukti makrokomandą, tai praranda tikslą iš pradžių padaryti pauzę makrokomandoje.

Norėdami išspręsti šią problemą, galime naudoti kilpą su metodu, vadinamu „DoEvents“.

1234567 Viešas papildomas testas ()Tamsiai ilgasJei i = nuo 1 iki 20 000Diapazonas („A1“). Vertė = i„DoEvents“Kitas I.Pabaiga Sub

Dabar, kol „Excel“ paleidžia aukščiau pateiktą makrokomandą, vartotojas gali ir toliau bendrauti su „Excel“ - pavyzdžiui, galime pakeisti skirtukus arba formatuoti langelius - iš esmės makrokomanda toliau veikia, tačiau „Excel“ ekranas nėra užšaldytas. Galėtume naudoti panašią kilpą, kad sukurtume „Excel“ laikmačio funkciją ir įtrauktume „DoEvents“ metodas, skirtas atšaukti ekraną, kol veikia laikmatis.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave