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

Funkcia čakania na Excel VBA

VBA Wait je vstavaná 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ávaný kód a na nejaký čas pozastaviť, aby sme mohli 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 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ž sám názov hovorí, bude obsahovať makro kód, ktorý sa má vykonať v stanovenom časovom rámci. Pri použití tejto metódy musíme určiť čas, kedy sa má náš kód pozastaviť, v ďalšom 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, kde sa hovorí Boolean, znamená to, že vráti výsledok ako booleovské hodnoty, tj. TRUE alebo FALSE.

Až do zadaného času príde FALSE a v okamihu zadaného času vráti TRUE.

To sa nepodobá funkcii 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 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) "pre 32 bitové systémy Koniec Ak 

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

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

Príklad č

Predpokladajme, že pracujete v polovici dňa 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, ale neustále sa mení.

Povedzme, že kedykoľvek spustíte kód, chcete počkať 2 minúty, ako to uviesť v 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.

Na zastavenie alebo pozastavenie vykonávania kódu od aktuálneho času do 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 (), inak je pravdepodobné, že váš zošit programu Excel bude pozastavený až do polnoci. Z metódy pozastavenia však môžeme kedykoľvek vystúpiť 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), ktorý chcete vytvoriť, a po každom cykle 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ÁNOKVBA 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 milisekundyMôžeme zdržať iba celé sekundy.