„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 vykdymo procesą, kad užbaigtume kitus užduočių rinkinius. Kiti užduočių rinkiniai gali būti mūsų kodavimo dalis arba kitos makroprocedūros dalis, arba jie gali būti įvedami dabartinei „Excel“ makrokomandai. Kaip galite pristabdyti programą, kai ji veikia? Mes galime tam tikrą laiką pristabdyti vartotojo nurodytą procedūros kodą ir po to galime atnaujinti programą. Tai galime padaryti VBA naudodami funkciją SLEEP.

Ką veikia VBA miego funkcija?

Miegoti, kaip sako pats pavadinimas, „kurį laiką miegoti“, „kurį laiką pailsėti“, „kuriam laikui pristabdyti“, kurį laiką praleisti laiką ir pan. … Miego funkcija leidžia vartotojams pristabdyti mūsų makrokodą milisekundėms . Naudodamiesi tuo, mes galime atidėti makrokodo procesą.

Jei manote, kad turime integruotą funkciją, vadinamą SLEEP, tuomet klystate, nes VBA tokios funkcijos nėra. Veikiau turime funkciją, vadinamą „Miego režimu“ kaip „Windows“ funkciją. Įvedę specialų kodų rinkinį, iš tikrųjų galime šią funkciją iškviesti VBA. Tiesą sakant, tai yra funkcija, esanti „Windows DLL“ failuose, todėl prieš VBA paprogramės pradžią 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 #Else Public Declare Sub Sleep Lib„ kernel32 "(ByVal dwMilliseconds As Long) '32 bitų versijoms „Excel“ #End If

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ų.

1 pavyzdys

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

Kodas:

#Sub Sleep_Example1 () Pabaigos antrinis

Paskelbkite du kintamuosius kaip eilutę.

Kodas:

Pradžios laikas kaip eilutė

StartTime“ kintamajam priskirkite funkcijos TIME 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, taigi, norint sustabdyti 10 sekundžių. Turime 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 Pradžios laikas Miego režimas (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ų matysime makrokomandos pradžios laiką, ty esamą laiką jūsų sistemoje.

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

Po 10 sekundžių jis pradės atnaujinti kodą, taigi parodys pabaigos laiką, ty, palaukus 10 sekundžių, koks dabar laikas.

Dabar galite matyti, 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. Pavyzdžiui, 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 kilpa eina 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 lygi 3 sekundėms. Ciklo pabaigos laikas = laikas MsgBox "Jūsų kodas baigėsi" & EndTime End Sub

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

Pastaba: vykdydami šį kodą, negalite naudoti „Excel“. Net pabėgimo raktas neveiks.

Įdomios straipsniai...