VBA funkcija čakanja | Kako uporabiti način čakanja Excel VBA?

Funkcija čakanja Excel VBA

VBA Wait je vgrajena funkcija, s katero zaustavimo izvajanje kode za določen čas, je zelo podobna tistemu, kar počnemo v ukazu za spanje, in za zaustavitev kode uporabimo metodo application.wait.

Nekatere kode zahtevajo nekaj časa pred napredovanjem v naslednjo vrstico kode, ker je treba opraviti druge naloge. V teh primerih moramo ustaviti izvajanje kode in nekaj časa ustaviti, nato pa nadaljevati z izvajanjem. Izvedbo kode lahko zaustavimo na dva načina, pri čemer je prva metoda »Sleep« in druga metoda »Wait«. V prejšnjem članku smo razpravljali o metodi »VBA Sleep« za zaustavitev kode VBA.

"Počakaj", kot že samo ime pove, da bo koda makra zadržana v določenem časovnem okviru. Z uporabo te metode moramo določiti čas, ko naj se naša koda zaustavi, v nadaljevanju bomo videli primere.

Sintaksa funkcije WAIT je naslednja.

Omeniti moramo, koliko časa naj se naša koda zaustavi. Kot vidite na koncu piše Boolean, to pomeni, da vrne rezultat kot logične vrednosti, tj. TRUE ali FALSE.

Dokler ne pride določen čas, piše FALSE in trenutek, ko pride določen čas, vrne TRUE.

To je v nasprotju s funkcijo SLEEP, ker je WAIT vgrajena funkcija, kjer je SLEEP funkcija Windows. Preden dostopimo do funkcije SLEEP, moramo na vrhu modula omeniti spodnjo kodo. A WAIT tega ne zahteva.

Koda:

# Če VBA7 potem javno izjavi PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'za 64-bitne sisteme # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Za 32-bitne sisteme se konča, če 

Primeri uporabe funkcije čakanja Excel VBA

To predlogo VBA Wait Excel lahko prenesete tukaj - VBA Wait Excel Predloga

Primer # 1

Recimo, da delate v Excelu sredi dneva ob 14:30:00 in želite, da se vaša koda zaustavi, dokler čas ne postane 14:40:00. Uporabite lahko spodnjo kodo.

Koda:

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

Koda bo ustavila vaš excel, dokler ne bo dosegel 14:40:00 v vašem operacijskem sistemu. Zagotavljanje takšnega časa je nevarno, ker ne delamo vedno od 14:30:00, ves čas se spreminja.

Recimo, kadar koli zaženete kodo, ki jo želite počakati 2 minuti, kako naj to navede v svoji kodi?

Tako lahko s funkcijo VBA NOW s funkcijo TIME VALUE vnesemo določen čas iz trenutnega časa.

Samo, da vas spomnim, funkcija NOW () vrne trenutni datum in uro v skladu z vašim računalniškim sistemom. Funkcija TIMEVALUE predstavlja čas od 00:00:00 do 23:59:59, tj. 23:59:59 PM v 24-urnem formatu. Vrednost niza pretvori v časovno vrednost.

Na primer NOW () + TIMEVALUE (00:02:30) pomeni trenutni čas + 2 min 30 sek.

Če je trenutni čas 14:25:30, potem postane 14:28:00.

Če želite zaustaviti ali zaustaviti izvajanje kode od trenutnega časa do naslednjih 10 minut, lahko uporabite spodnjo kodo.

Koda:

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

Pomembno je, da za natančen premor uporabite funkcijo NOW (), sicer obstaja velika verjetnost, da se bo vaš Excelov delovni zvezek zaustavil do polnoči. Vendar pa lahko iz metode začasne ustavitve kadar koli pridemo s pritiskom na tipko Esc ali tipko Break.

2. primer

Počakajte 10 sekund vsakič, ko se zanka zažene

Metoda čakanja se dobro uporablja pri zankah. V nekaterih situacijah boste morda morali počakati 10 sekund vsakič, ko se zažene časovna zanka. Na primer, poglejte spodnje podatke.

Za izračun dobička = (prodaja - stroški) želite ustvariti zanko in po vsaki zanki počakajte 10 sekund, da preverite, ali je rezultat natančen ali ne. Spodnja koda bo to storila.

Koda:

 Sub Wait_Example3 () Dim k kot celo število za k = 2 do 9 celic (k, 4). Vrednost = Celice (k, 2) - Celice (k, 3) Uporaba. : 10 ")) Naprej k Konec Sub 

Ta koda bo izračunala stolpec dobička po vrsticah. Po zaključku prve vrstice bo počakal 10 sekund, preden bo izračunal naslednjo vrstico.

VBA Sleep vs VBA Počakaj

VBA SPANJEVBA ČAKAJ
To ni vgrajena funkcija VBA, za dostop do te funkcije potrebuje posebno kodo.Je vgrajena funkcija VBA in za dostop do te funkcije ne zahteva posebne kode.
Spanje kot časovni okvir zahteva milisekunde.Čakanje zahteva reden časovni okvir.
Kodo lahko zakasnimo v milisekundahZamudimo lahko le v celih sekundah.