Pozastavenie VBA | Pozastavte kód VBA pomocou funkcie spánku a čakania

Pozastavte spustenie kódu VBA

Pauza VBA sa používa na pozastavenie vykonania kódu na stanovenú dobu a na pozastavenie kódu vo VBA použijeme metódu application.wait.

Keď staviame veľké projekty VBA po vykonaní niečoho, možno si budeme musieť nejaký čas počkať, kým urobíme ďalšie úlohy. Ako v takýchto scenároch pozastavíme makrokód, aby urobil našu úlohu? Kód VBA môžeme na určité časové obdobie pozastaviť pomocou dvoch funkcií, ktoré sú „čakanie“ a „spánok“.

Ako pozastaviť kód pomocou metódy čakania?

„Čakať“ je funkcia, ktorú používame vo VBA na udržanie chodu makra na konkrétny čas. Pri použití tejto funkcie musíme spomenúť, do akej doby má náš kód čakať.

Túto šablónu programu VBA Pause Excel si môžete stiahnuť tu - Šablóna VBA Pause Excel

Napríklad ak vykonávate kód o 13:00:00 a zadáte čas ako „13:15:00“, potom bude makro podržané 15 minút.

Teraz sa pozrite na argument funkcie WAIT vo VBA.

V časovom argumente musíme spomenúť, v akom čase by mal náš kód pozastaviť alebo počkať.

Napríklad sa pozrite na nižšie uvedený kód VBA.

Kód:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " Do VBA „End Sub 

Pamätajte si, že pri spustení tohto kódu je môj systémový čas 13:00:00, hneď ako spustím kód, vykonajú sa prvé dva riadky, tj.

Rozsah („A1“). Hodnota = „Dobrý deň“ & Rozsah („A2“). Hodnota = „Vitajte“

Ale ak sa pozriete na ďalší riadok, hovorí Application.Wait („13:15:00“), takže po vykonaní týchto úloh bude moje makro pozastavené na 15 minút, tj. Od 13:00:00 bude čakať, kým môj systém čas dosiahne 13:15:01.

Akonáhle môj systémový čas dosiahne ten čas, vykoná zostávajúce riadky kódu.

Rozsah („A3“). Hodnota = „Do VBA“

Toto však nie je najlepší spôsob nacvičovania kódu pozastavenia, povedzme, že kód spúšťate v rôznych časoch, potom musíme použiť funkciu NOW VBA s funkciou TIME VALUE.

Teraz funkcia vracia aktuálny dátum a čas podľa systému, na ktorom pracujeme.

Funkcia TIME Value udržuje čas od 00:00:00 do 23:59:29.

Dobre, predpokladajme, že pri každom spustení kódu musíme pozastaviť kód na 10 minút, potom môžeme použiť nasledujúci kód.

Kód:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Value =" Do VBA "End Sub 

Je to podobné ako v predchádzajúcom kóde, ale jediný rozdiel je v tom, že sme pridali funkciu NOW & TIME VALUE.

Kedykoľvek spustíme tento kód, pozastaví alebo pozastaví vykonávanie na 10 minút.

Ako pozastaviť kód VBA pomocou metódy spánku?

Spánok je vo VBA komplikovaná funkcia, pretože nejde o zabudovanú funkciu. Pretože nejde o zabudovaný modul, aby bolo možné ho sprístupniť na použitie, je potrebné do hornej časti nášho modulu pridať nasledujúci kód.

Kód:

# Ak VBA7 Potom Public vyhlási PtrSafe Sub Sleep Lib „kernel32“ (ByVal dwMilliseconds As LongPtr) 'pre 64 bitové systémy # Els Public Declare Sub Sleep Lib „kernel32“ (ByVal dwMilliseconds As Long) # Koniec Ak „pre 32 bitové systémy 

Musíte iba skopírovať vyššie uvedený kód a vložiť ho do hornej časti modulu.

Dôvod, prečo musíme pridať vyššie uvedený kód, pretože SLEEP je funkcia VBA prezentovaná v súboroch DLL systému Windows, takže pred spustením podprocesu musíme deklarovať nomenklatúru.

Dobre, pozrime sa teraz na príklad funkcie SLEEP.

Kód:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10 000) EndTime = Time MsgBox EndTime End Sub 

Najskôr sme deklarovali dve premenné ako String.

 Dim StartTime As String Dim EndTime As String 

Potom sme premennej StartTime priradili funkciu TIME excel. Funkcia TIME vráti aktuálny čas podľa systému.

StartTime = čas

Potom sme priradili to isté, ktoré sa má zobrazovať v schránke správ.

MsgBox StartTime

Potom som použil funkciu SLEEP ako spánok (10 000).

Tu je 10 000 milisekúnd, čo sa vo VBA rovná 10 sekundám.

Potom som konečne priradil ešte jednu funkciu TIME premennej EndTime .

Teraz som opäť napísal kód, ktorý ukazuje čas.

EndTime = čas

Zobrazí sa rozdiel medzi časom začatia a časom ukončenia.

Teraz vykonám kód a uvidím, aký je začiatočný čas.

Keď vykonám kód, môj systémový čas je 13:40:48 a teraz bude môj kód spať 10 sekúnd. Na konci je môj čas nasledovný.

Takto teda môžeme pozastaviť vykonávanie kódu na stanovený čas.