Tento tutoriál předvede, jak pozastavit / oddálit kód pomocí funkcí Čekat a Spát ve VBA.
Když vytváříme velké programy VBA, které provádějí mnoho výpočtů, nebo dokonce voláme spuštění externího programu, můžeme požadovat, aby náš kód VBA přestal běžet po určitou dobu, zatímco probíhá externí proces. VBA má k dispozici několik metod, jak toho dosáhnout.
Použití metody Application.Wait
Pokud potřebujeme před provedením dalšího kroku pozastavit běh našeho makra na nějakou dobu nebo dokud není dosaženo stanoveného času, můžeme použít Počkejte metoda. To by mohlo být užitečné například v případě, že jsme zautomatizovali proces přihlášení na web a potřebujeme několik sekund počkat, než se stránka načte, než bude naše makro pokračovat v běhu.
Počkejte 1 sekundu
Včetně tohoto řádku níže do vašeho makra bude jeho běh pozastaven na přibližně 1 sekundu:
1 | Application.Wait (Now + TimeValue ("0:00:01")) |
Počkej do
V některých případech budete muset počkat na konkrétní čas. S tímto řádkem níže nebude vaše makro pokračovat před 9:00:
1 | Aplikace. Počkejte „09:00:00“ |
Vezměte prosím na vědomí, že Počkejte nepřijímá zpoždění kratší než 1 sekundu.
Programování VBA | Generátor kódu pracuje pro vás!
Použití metody spánku
Pokud potřebujete přesnější způsob pozastavení makra, můžete použít metodu Spánek.
Spánek je funkce Windows API, to znamená, že není součástí VBA. Přístup je možný pomocí speciálního prohlášení.
Pokud používáte 64bitovou verzi Microsoft Office, můžete následující příkaz vložit do nového modulu nebo na začátek modulu (ne přímo v podprogramu), ve kterém chcete použít funkci Spánek:
1 | Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr) |
S 32bitovou verzí použijte tento řádek:
1 | Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr) |
Po deklarování funkce Spánek k ní máte přístup ve svých podprogramech takto:
1 | Spánek 10 000 |
S tímto řádkem nad bude vaše makro pozastaveno na 10 000 milisekund, tj. 10 sekund.
Použití smyčky s událostmi Do
Velkou nevýhodou použití metod Čekání a Spánek je, že uživatel nemůže v aplikaci Excel nic dělat, zatímco čeká na pokračování makra. Uživatel si může myslet, že aplikace Excel přestala reagovat a uživatel ji poté může používat Ctl+Break Chcete -li makro přerušit, je to v rozporu s účelem vložení pauzy do makra pro začátek.
K překonání tohoto problému můžeme použít smyčku s metodou zvanou DoEvents.
1234567 | Veřejný dílčí test ()Dim i As LongPro i = 1 až 20 000Rozsah („A1“). Hodnota = iUdálosti DoEPříště jáEnd Sub |
Nyní, když Excel spouští výše uvedené makro, může uživatel pokračovat v interakci s Excelem - můžeme například měnit karty nebo formátovat buňky - v zásadě makro pokračuje v běhu, ale obrazovka Excelu není zamrzlá. Podobnou smyčku bychom mohli použít k vytvoření funkce časovače v Excelu a začlenění Události DoE způsob, jak uvolnit obrazovku, když běží časovač.