„Excel VBA“ miego funkcija pristabdyti jūsų makrokodą

„Excel VBA“ miego funkcija

„VBA Sleep“ funkcija yra „Windows“ failuose esanti „Windows“ funkcija, naudojama sustabdyti arba sustabdyti makrokomandos paleidimą tam tikrą laiką po to, kai galime atnaujinti programą.

Yra situacijų, kai turime sustabdyti makrokomandos procesą, kad atliktume kitus užduočių rinkinius. Kiti užduočių rinkiniai gali būti mūsų kodavimo dalis arba kitos makrokomandos dalis, arba jie gali būti įvedami dabartinei „Excel“ makrokomandai. Kaip galite pristabdyti programą, kai ji veikia? Galime pristabdyti tam tikrą vartotojo nurodytą laiką ir po tam tikro kiekio galime atnaujinti programą. Tai galime padaryti VBA naudodami funkciją SLEEP.

Ką veikia VBA miego funkcija?

SLEEP, nes pats pavadinimas sako „miegoti kurį laiką“, „kurį laiką pailsėti“, „sustabdyti laiką“, kurį laiką praleisti laiką “ir pan. Miego funkcija leidžia vartotojams pristabdyti mūsų makrokodą milisekundėms. Tai naudodami galime atidėti makrokodos procesą.

Jei manote, kad turime įmontuotą funkciją, vadinamą SLEEP, tada klystate, nes VBA tokios funkcijos nėra, o mes turime funkciją, vadinamą Miego režimu, kaip lango funkciją. Įvesdami specialų kodų rinkinį, mes iš tikrųjų galime šią funkciją iškviesti VBA. Tiesą sakant, tai yra funkcija, esanti „Windows DLL“ failuose, todėl prieš pradėdami paprogramę „vba“, turime deklaruoti API nomenklatūrą.

Žemiau pateikiamas VBA kodas.

Kodas:

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

Nukopijuokite aukščiau pateiktą informaciją ir įklijuokite į savo modulį prieš pradėdami rašyti makrokodus. Tai turėtų būti įklijuota taip į jūsų modulį.

Pavyzdys

Prieš parodydamas kodo rašymo būdą, leiskite man šiek tiek papasakoti apie miego funkciją. Tai vėluoja procesą milisekundėmis. Taigi 1 sekundė yra lygi 1000 milisekundžių, jei norite pristabdyti 10 sekundžių, tai turėtų būti 10000 milisekundžių.

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

1 pavyzdys

Kai API kodas įklijuojamas prieš antrinės procedūros pradžią, sukurkite makrokomandos pavadinimą.

Kodas:

# Sub Miego_pavyzdys1 () Pabaigos antrinis 

Paskelbkite du kintamuosius kaip eilutę.

Kodas:

 Pradžios laikas kaip eilutė 

StartTime“ kintamajam priskirkite TIME funkcijos reikšmę. Pastaba: „Excel“ funkcijos LAIKAS grąžina dabartinį laiką.

Kodas:

StartTime = laikas

Dabar mes parodysime šį pranešimą pranešimų laukelyje VBA.

Kodas:

StartTime = laikas MsgBox StartTime

Dabar naudodami miego funkciją pristabdysime kodą 10 sekundžių. Kaip sakiau, jis pristabdo kodą milisekundėmis, todėl norint sustabdyti 10 sekundžių reikia naudoti 10000 milisekundžių.

Kodas:

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

Dabar naudokite antrąjį kintamąjį „EndTime“ ir priskirkite dabartinį laiką.

Kodas:

 Sub Sleep_Pavyzdys1 () Dim StartTime as String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (Time) Time (Time) 

Dabar du kintamieji „ StartTime“ ir „ EndTime “ laikys makrokomandos pradžios ir pabaigos laiką. Paleiskite šią makrokomandą, iš pradžių pamatysime makrokomandos pradžios laiką, ty dabartinį laiką jūsų sistemoje.

Spustelėkite Gerai, jis miegos 10 sekundžių. Galite pamatyti buferio simbolį.

Po 10 sekundžių jis pradės atnaujinti kodą, taigi jis parodys pabaigos laiką, ty, palaukęs 10 sekundžių, koks yra dabartinis laikas.

Dabar galite pamatyti, kad makrokomanda prasidėjo 10:54:14 ir baigėsi 10:54:24, ty tiksliai yra 10 sekundžių skirtumas. Per tas 10 sekundžių VBA pristabdo kodo veikimą.

2 pavyzdys - miego funkcija kilpose

Miegą geriausia naudoti su VBA kilpomis. Pvz., Noriu įterpti serijos numerius nuo 1 iki 10 naudodamas „Do while loop“ VBA.

Įvedus vieną skaičių, mano kodas turėtų laukti 3 sekundes, taigi, kai ciklas tęsiasi 10 kartų, iš viso turėtų būti 30 sekundžių.

Kodas:

 Pakaitinis miego_pavyzdys2 () Dim k kaip sveikasis skaičius k = 1 Do K Sub 

Paleiskite šį kodą ir jūs turite palaukti mažiausiai 30 sekundžių, kad užbaigtumėte procesą.

Norėdami stebėti tikslų laiką, naudokite žemiau pateiktą kodą.

Kodas:

 Pakaitinis miego_pavyzdys2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Jūsų kodas prasidėjo" & StartTime k = 1 Atlikite, kai k <= 10 langelių (k, 1). Vertė = kk = k + 1 miego (3000) '1000 milisekundžių yra 1 sekundė, taigi 3000 yra lygus 3 sekundėms. Ciklo pabaigos laikas = laikas MsgBox "Jūsų kodas baigėsi" & EndTime End Sub 

Šis kodas parodys jums 2 pranešimų langelį, pirmasis parodys pradžios laiką, o antrasis - pabaigos laiką.

Pastaba: Vykdydami šį kodą, negalite naudoti „Excel“, net neveiks pabėgimo klavišas.


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