Funkce čekání VBA | Jak používat Excel VBA Wait Method?

Funkce čekání aplikace Excel VBA

VBA Wait je vestavěná funkce používaná k pozastavení provádění kódu po stanovenou dobu, je velmi podobná tomu, co děláme v příkazu spánku, a k pozastavení kódu používáme metodu application.wait.

Některé z kódů vyžadují někdy před přechodem na další řádek kódu z důvodu dokončení dalších úkolů. V těchto případech musíme zastavit provádění kódu a na nějakou dobu pozastavit a poté pokračovat v provádění. Můžeme pozastavit spuštění kódu dvěma způsoby, prvním je metoda „Spánek“ a druhým metoda „Čekání“. V našem dřívějším článku jsme diskutovali o metodě „VBA spánku“ k pozastavení kódu VBA.

„Počkejte“, jak již název napovídá, bude obsahovat kód makra, který má být spuštěn, do stanoveného časového rámce. Pomocí této metody musíme určit čas, kdy by se náš kód měl pozastavit, uvidíme příklady dále.

Syntaxe funkce WAIT je následující.

Musíme zmínit dobu, po kterou by se náš kód měl pozastavit. Jak vidíte na konci, říká Boolean, to znamená, že vrátí výsledek jako Boolean hodnoty, tj. TRUE nebo FALSE.

Dokud nedorazí zadaný čas, říká FALSE a v okamžiku, kdy dorazí zadaný čas, vrátí PRAVDA.

To se nepodobá funkci SLEEP, protože WAIT je vestavěná funkce, kde SLEEP je funkce Windows. Než vstoupíme do funkce SLEEP, musíme zmínit níže uvedený kód v horní části modulu. Ale WAIT to nevyžaduje.

Kód:

# If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' for 32 Bit Systems end if 

Příklady použití funkce Excel VBA Wait

Tuto šablonu VBA Wait Excel si můžete stáhnout zde - VBA Wait Excel Template

Příklad č. 1

Předpokládejme, že pracujete v aplikaci Excel v poledne ve 14:30:00 a chcete, aby byl váš kód pozastaven, dokud nebude čas 14:40:00. Můžete použít níže uvedený kód.

Kód:

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

Tento kód zastaví vaši excelu v práci, dokud ve vašem operačním systému čas nedosáhne 14:40:00. Poskytování takového času je nebezpečné, protože ne vždy pracujeme od 14:30:00, ale neustále se mění.

Řekněme, že kdykoli spouštíte kód, který chcete počkat 2 minuty, jak to odkázat ve svém kódu?

Můžeme tedy použít funkci VBA NOW s funkcí TIME VALUE k zadání zadaného času z aktuálního času.

Jen pro připomenutí funkce NYNÍ () vrací aktuální datum a čas podle vašeho počítačového systému. Funkce TIMEVALUE představuje čas od 00:00:00 do 23:59:59 tj. 23:59:59 ve 24hodinovém formátu. Převádí hodnotu řetězce na hodnotu času.

Příklad NOW () + TIMEVALUE (00:02:30) znamená Aktuální čas + 2 min 30 s.

Pokud je aktuální čas 14:25:30, stane se 14:28:00.

Chcete-li zastavit nebo pozastavit provádění kódu od aktuálního času do následujících 10 minut, můžete použít níže uvedený kód.

Kód:

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

Pro přesnou pauzu je důležité použít funkci NOW (), jinak existuje šance, že sešit aplikace Excel pozastavil až do půlnoci. Z metody pozastavení však můžeme kdykoli vyjít stisknutím klávesy Esc nebo klávesy Break.

Příklad č. 2

Po každém spuštění smyčky počkejte 10 sekund

Metoda čekání se dobře používá u smyček. Existují situace, kdy budete možná muset počkat 10 sekund při každém spuštění smyčky. Podívejte se například na níže uvedená data.

Chcete-li vypočítat Zisk = (Prodej - Náklady), který chcete vytvořit, a po každé smyčce budete chtít počkat 10 sekund, abyste zkontrolovali, zda je výsledek přesný. Níže uvedený kód to udělá.

Kód:

 Sub Wait_Example3 () Dim k As Integer Pro k = 2 až 9 buněk (k, 4). Hodnota = buňky (k, 2) - buňky (k, 3) Application.Wait (Now () + TimeValue ("00:00) : 10 ")) Další k Konec Sub 

Tento kód vypočítá sloupec zisku řádek po řádku. Po dokončení prvního řádku počká 10 sekund, než vypočítá další řádek.

VBA Spánek vs VBA Počkejte

VBA SLEEP VBA ČEKEJTE
Není to vestavěná funkce VBA, pro přístup k této funkci potřebuje speciální kód. Jedná se o vestavěnou funkci VBA, pro přístup k této funkci nevyžaduje žádný speciální kód.
Spánek vyžaduje jako časový rámec milisekundy. Čekání vyžaduje pravidelný časový rámec.
Můžeme zpozdit kód v milisekundách Můžeme zdržet jen celé sekundy.

$config[zx-auto] not found$config[zx-overlay] not found