Pozastavení VBA | Pozastavte kód VBA pomocí funkce spánku a čekání

Pozastavení spuštění kódu VBA

VBA Pause se používá k pozastavení provádění kódu po stanovenou dobu ak pozastavení kódu ve VBA používáme metodu application.wait.

Když stavíme velké projekty VBA po provedení něčeho, možná budeme muset počkat, než uděláme další úkoly. Jak v takových scénářích pozastavíme kód makra, abychom provedli náš úkol? Můžeme pozastavit kód VBA na určité časové období pomocí dvou funkcí a tyto funkce jsou „Wait“ a „Sleep“.

Jak pozastavit kód pomocí metody čekání?

„Čekat“ je funkce, kterou používáme ve VBA k udržení chodu makra po určitou dobu. Použitím této funkce musíme zmínit, do jaké doby by náš kód měl čekat.

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

Pokud například provádíte kód ve 13:00:00 a zadáte čas jako „13:15:00“, bude makro drženo po dobu 15 minut.

Nyní se podívejte na argument funkce WAIT ve VBA.

V časovém argumentu musíme zmínit, kdy by měl náš kód pozastavit nebo počkat.

Podívejte se například na níže uvedený kód VBA.

Kód:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " K VBA „End Sub 

Pamatujte, že při spuštění tohoto kódu je můj systémový čas 13:00:00, jakmile spustím kód, provede první dva řádky, tj.

Range ("A1"). Value = "Hello" & Range ("A2"). Value = "Welcome"

Ale pokud se podíváte na další řádek, říká Application.Wait („13:15:00“), takže po provedení těchto řádkových úloh bude moje makro pozastaveno na 15 minut, tj. Od 13:00:00 bude čekat, až můj systém čas dosáhne 13:15:01.

Jakmile můj systémový čas dosáhne té doby, provede zbývající řádky kódu.

Rozsah („A3“). Hodnota = „Do VBA“

To však není nejlepší způsob procvičování kódu pozastavení, řekněme, že kód spouštíte v různých časech, pak musíme použít funkci NOW VBA s funkcí TIME VALUE.

Funkce nyní vrací aktuální datum a čas podle systému, na kterém pracujeme.

Funkce TIME Value udržuje čas od 00:00:00 do 23:59:29.

Dobře, předpokládejme, že při každém spuštění kódu musíme pozastavit kód na 10 minut, pak můžeme použít níže uvedený kód.

Kód:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Value =" Do VBA "End Sub 

To je podobné jako u předchozího kódu, ale jediný rozdíl je v tom, že jsme přidali funkci NOW & TIME VALUE.

Kdykoli spustíme tento kód, pozastaví nebo pozastaví provádění po dobu 10 minut.

Jak pozastavit kód VBA pomocí metody spánku?

Spánek je ve VBA komplikovaná funkce, protože se nejedná o vestavěnou funkci. Vzhledem k tomu, že se nejedná o vestavěný, abychom jej mohli používat, musíme do horní části našeho modulu přidat níže uvedený kód.

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) # End If' for 32 Bit Systems 

Musíte pouze zkopírovat výše uvedený kód a vložit jej do horní části modulu.

Důvod, proč musíme přidat výše uvedený kód, protože SLEEP je funkce VBA prezentovaná v souborech DLL systému Windows, takže před spuštěním podprocesu musíme deklarovat nomenklaturu.

Dobře, podívejme se nyní na příklad funkce SLEEP.

Kód:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10 000) EndTime = Time MsgBox EndTime End Sub 

Nejprve jsme deklarovali dvě proměnné jako String.

 Dim StartTime jako řetězec Dim DimTime jako řetězec 

Pak jsme proměnné StartTime přiřadili funkci TIME excel. Funkce TIME vrací aktuální čas podle systému.

StartTime = čas

Pak jsme přiřadili totéž, aby se zobrazovalo v okně se zprávou.

MsgBox StartTime

Poté jsem použil funkci SLEEP jako režim spánku (10 000).

Tady je 10 000 milisekund, což se ve VBA rovná 10 sekundám.

Nakonec jsem přidělil ještě jednu funkci TIME proměnné EndTime .

Nyní jsem znovu napsal kód, který ukazuje čas.

EndTime = čas

Zobrazí se rozdíl mezi časem zahájení a časem ukončení.

Nyní provedu kód a uvidím, jaký je počáteční čas.

Když spustím kód, můj systémový čas je 13:40:48 a nyní můj kód bude spát 10 sekund. Na konci je můj čas následující.

Takto můžeme pozastavit provádění kódu po stanovenou dobu.


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