Funkcia čakania VBA Ako používať čakaciu metódu Excel VBA?

Funkcia čakania na Excel VBA

VBA Wait je zabudovaná funkcia používaná na pozastavenie vykonávania kódu na stanovený čas, je veľmi podobná tomu, čo robíme v príkaze na spánok, a na pozastavenie kódu používame metódu application.wait.

Niektoré z kódov sú potrebné niekedy pred prechodom na ďalší riadok kódu, pretože je potrebné splniť ďalšie úlohy. V týchto prípadoch musíme zastaviť vykonávanie kódu a na chvíľu ho pozastaviť, až potom pokračovať v spustení. Kód, ktorý sa má vykonať, môžeme pozastaviť dvoma spôsobmi, prvým je metóda „spánku“ a druhým je metóda „čakania“. V našom staršom článku sme sa zaoberali metódou „VBA spánku“ na pozastavenie kódu VBA.

„Počkajte,“ ako už hovorí samotný názov, bude obsahovať makro kód, ktorý sa má vykonať, v stanovenom časovom rámci. Pomocou tejto metódy musíme určiť čas, po ktorý by sa náš kód mal pozastaviť. Ďalej uvidíme príklady.

Syntax funkcie WAIT je nasledovná.

Musíme spomenúť čas, ktorý by náš kód mal pozastaviť. Ako vidíte na konci, píše sa v ňom Boolean. To znamená, že vráti výsledok ako logické hodnoty, tj TRUE alebo FALSE.

Kým nedôjde zadaný čas, oznámi hodnotu FALSE a v okamihu, keď zadaný čas dorazí, vráti hodnotu PRAVDA.

Toto je na rozdiel od funkcie SLEEP, pretože WAIT je zabudovaná funkcia, kde SLEEP je funkcia Windows. Predtým, ako vstúpime do funkcie SLEEP, musíme spomenúť nasledujúci kód v hornej časti modulu. Ale WAIT to nevyžaduje.

Kód:

# Ak VBA7 potom verejné vyhlásenie PtrSafe Sub Sleep Lib „kernel32“ (ByVal dwMilliseconds As LongPtr) 'pre 64-bitové systémy #Else Public Declare Sub Sleep Lib „kernel32“ (ByVal dwMilliseconds As Long)' pre 32 bitové systémy končí, ak

Príklady použitia funkcie čakania na Excel VBA

Príklad č

Predpokladajme, že pracujete v poledne programu Excel o 14:30:00 a chcete, aby bol váš kód pozastavený, kým nenastane čas 14:40:00. Môžete použiť nižšie uvedený kód.

Kód:

Sub Wait_Example1 () Application.Wait "14:40:00" End Sub

Tento kód zastaví prácu programu Excel až do času 14:40:00 vo vašom operačnom systéme. Poskytnutie takéhoto času je nebezpečné, pretože nie vždy pracujeme od 14:30:00. Stále sa to mení.

Povedzme, kedykoľvek spustíte kód. Chcete počkať 2 minúty, ako sa na to odvoláte vo svojom kóde?

Môžeme teda použiť funkciu VBA NOW s funkciou TIME VALUE na zadanie zadaného času z aktuálneho času.

Len pre pripomenutie, funkcia NOW () vráti aktuálny dátum a čas podľa vášho počítačového systému. Funkcia TIMEVALUE predstavuje čas od 00:00:00 do 23:59:59 tj 23:59:59 v 24 hodinovom formáte. Konvertuje hodnotu reťazca na časovú hodnotu.

Pre príklad NOW () + TIMEVALUE (00:02:30) znamená aktuálny čas + 2 min 30 s.

Ak je aktuálny čas 14:25:30, stane sa 14:28:00.

Ak chcete zastaviť alebo pozastaviť vykonávanie kódu z aktuálneho času na nasledujúcich 10 minút, môžete použiť nasledujúci kód.

Kód:

Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub

Pre presné pozastavenie je dôležité použiť funkciu NOW (). V opačnom prípade je pravdepodobné, že váš zošit programu Excel bol pozastavený až do polnoci. Z metódy pozastavenia však môžeme kedykoľvek vyjsť stlačením klávesu Esc alebo klávesu Break.

Príklad č

Po každom spustení slučky počkajte 10 sekúnd

Metóda čakania sa dobre používa so slučkami. Existujú situácie, kedy môže byť potrebné počkať 10 sekúnd pri každom spustení slučky. Napríklad si pozrite nasledujúce údaje.

Ak chcete vypočítať zisk = (tržby - náklady), chcete vytvoriť slučku a po každej slučke chcete počkať 10 sekúnd, aby ste skontrolovali, či je výsledok presný alebo nie. Nasledujúci kód to urobí.

Kód:

Sub Wait_Example3 () Dim k As Integer For k = 2 to 9 Cells (k, 4). Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00) : 10 ")) Ďalej k Koniec Sub

Tento kód počíta riadok po riadku zisk. Po dokončení prvého riadku bude čakať 10 sekúnd, kým vypočíta ďalší riadok.

VBA spánok vs. VBA čakanie

VBA SPÁNOK VBA POČKAJTE
Nie je to zabudovaná funkcia VBA, na prístup k tejto funkcii je potrebný špeciálny kód. Je to zabudovaná funkcia VBA, na prístup k tejto funkcii nie je potrebný žiadny špeciálny kód.
Spánok vyžaduje ako časový rámec milisekundy. Čakanie vyžaduje pravidelný časový rámec.
Kód môžeme oneskoriť o milisekundy. Môžeme zdržať iba celé sekundy.

Zaujímavé články...