Funkcie čakania a spánku VBA - pozastavenie / oneskorenie kódu VBA

Tento tutoriál ukáže, ako pozastaviť / oneskoriť kód pomocou funkcií čakania a spánku vo VBA.

Keď vytvoríme veľké programy VBA, ktoré vykonávajú veľa výpočtov, alebo dokonca spustíme externý program, môžeme požiadať, aby sa náš kód VBA na určitý čas zastavil, kým prebieha externý proces. VBA má na to k dispozícii niekoľko metód.

Použitie aplikácie. Počkajte

Ak potrebujeme na určitý čas pozastaviť beh našich makier alebo kým sa nedosiahne určený čas, môžeme použiť Aplikácia. Počkajte metóda. To môže byť užitočné napríklad vtedy, ak sme zautomatizovali proces prihlásenia na webovú stránku a potrebujeme niekoľko sekúnd počkať, kým sa stránka načíta, než bude naše makro pokračovať v prevádzke.

Počkajte 1 sekundu

Zahrnutím tohto riadku nižšie do makra sa jeho beh pozastaví na približne 1 sekundu:

1 Application.Wait (Now + TimeValue ("0:00:01"))

Počkaj pokial

V niektorých prípadoch budete musieť počkať do určeného času. S týmto riadkom nižšie nebude vaše makro pokračovať pred 9:00:

1 Aplikácia. Počkajte „09:00:00“

Upozorňujeme, že Aplikácia. Počkajte neakceptuje oneskorenie kratšie ako 1 sekundu.

Programovanie VBA | Generátor kódu pracuje za vás!

Použitie metódy spánku

Ak potrebujete presnejší spôsob pozastavenia makra, môžete použiť metódu Spánok.

Spánok je funkcia Windows API, to znamená, že nie je súčasťou VBA. Prístup je možný pomocou špeciálneho vyhlásenia.

Ak používate 64-bitovú verziu balíka Microsoft Office, môžete vložiť nasledujúci príkaz do nového modulu alebo na začiatok modulu (nie priamo do podprogramu), v ktorom chcete použiť funkciu spánku:

1 Verejné vyhlásenie PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

V 32-bitovej verzii použite tento riadok:

1 Verejná deklarácia subspánku Lib "kernel32" (ByVal Milliseconds As LongPtr)

Po vyhlásení funkcie spánok k nej máte prístup vo svojich podprogramoch takto:

1 Spať 10 000

S týmto riadkom nad bude vaše makro pozastavené na 10 000 milisekúnd, t.j. 10 sekúnd.

Použitie slučky s udalosťami Do

Veľkou nevýhodou použitia metód čakania a spánku je to, že používateľ nemôže v programe Excel nič robiť, kým čaká na pokračovanie makra. Používateľ si môže myslieť, že Excel prestal reagovať a používateľ ho môže potom používať Ctl+Break na prerušenie makra je v rozpore s účelom vloženia pauzy do makra na začiatok.

Na prekonanie tohto problému môžeme použiť slučku s metódou nazývanou DoEvents.

1234567 Verejný čiastkový test ()Dim i As LongPre i = 1 až 20 000Rozsah („A1“). Hodnota = iDoEventsĎalej iKoniec pod

Teraz, keď Excel spúšťa vyššie uvedené makro, používateľ môže pokračovať v interakcii s Excelom - môžeme napríklad meniť karty alebo formátovať bunky - v zásade makro pokračuje v prevádzke, ale obrazovka Excelu nie je zmrazená. Podobnú slučku by sme mohli použiť na vytvorenie funkcie časovača v programe Excel a začlenenie súboru DoEvents spôsob, akým je možné rozmraziť obrazovku počas spusteného časovača.

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave