VBA-odotustoiminto | Kuinka käyttää Excelin VBA-odotustapaa?

Excel VBA-odotustoiminto

VBA Wait on sisäänrakennettu toiminto, jota käytetään keskeyttämään koodin suorittaminen tietyksi ajaksi, se on hyvin samanlainen kuin mitä teemme lepotilassa -komennossa ja keskeyttämään käyttämämme koodin.

Jotkut koodit vaativat joskus ennen siirtymistä seuraavalle koodiriville muiden suoritettavien tehtävien vuoksi. Näissä tapauksissa meidän on lopetettava suoritettava koodi ja keskeytettävä jonkin aikaa ja jatkettava suorittamista. Voimme keskeyttää suoritettavan koodin kahdella tavalla: ensimmäinen on “Sleep” -menetelmä ja toinen “Wait” -menetelmä. Aikaisemmassa artikkelissamme olemme keskustelleet "VBA Sleep" -menetelmästä VBA-koodin keskeyttämiseksi.

"Odota", kuten nimi itse sanoo, että se pitää suoritettavan makrokoodin määrätyn ajanjakson ajan. Tätä menetelmää käytettäessä meidän on määritettävä aika, jonka koodin pitäisi keskeytyä, näemme seuraavaksi esimerkkejä.

WAIT-toiminnon syntaksi on seuraava.

Meidän on mainittava, kuinka kauan koodimme pitäisi keskeyttää. Kuten lopussa näkyy, siinä sanotaan Boolean, se tarkoittaa, että se palauttaa tuloksen Boolen-arvoina eli TOSI tai EPÄTOSI.

Kunnes määritetty aika saapuu, se sanoo EPÄTOSI ja ilmoitetun ajan saapuessa se palauttaa TOSI.

Tämä poikkeaa SLEEP-toiminnosta, koska WAIT on sisäänrakennettu toiminto, jossa SLEEP on Windows-toiminto. Ennen kuin käytämme SLEEP-toimintoa, meidän on mainittava alla oleva koodi moduulin yläosassa. Mutta WAIT ei vaadi tätä.

Koodi:

# Jos VBA7 Julkinen sitten julistaa PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMillisekunnit niin kauanPP) "64-bittisille järjestelmille # Muu julkinen julistaa Sub Sleep Lib" kernel32 "(ByVal dwMillisekunnit niin kauan)" 32-bittisille järjestelmille loppu, jos 

Esimerkkejä Excel VBA Wait -toiminnon käytöstä

Voit ladata tämän VBA Wait Excel -mallin täältä - VBA Wait Excel -malli

Esimerkki 1

Oletetaan, että työskentelet excelin keskipäivällä klo 14:30:00 ja haluat koodisi keskeytyvän, kunnes kellonajaksi tulee 14:40:00. Voit käyttää alla olevaa koodia.

Koodi:

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

Koodi estää excelsi toimimasta, kunnes aika saavuttaa käyttöjärjestelmän 14:40:00. Tällaisen ajan tarjoaminen on vaarallista, koska emme aina työskentele klo 14.30 alkaen, se vaihtelee koko ajan.

Oletetaan, että aina kun käytät koodia, jota haluat odottaa 2 minuuttia, miten viitataan tähän koodissasi?

Joten voimme käyttää VBA NOW -toimintoa TIME VALUE -toiminnon avulla määritetyn ajan syöttämiseksi nykyisestä ajasta.

Vain muistuttaa sinua NYT () -toiminto palauttaa nykyisen päivämäärän ja kellonajan tietokoneesi mukaan. TIMEVALUE-funktio edustaa aikaa 00:00:00 - 23:59:59 eli 23:59:59 PM 24 tunnin muodossa. Se muuntaa merkkijonon arvon aika-arvoksi.

Esimerkiksi NOW () + TIMEVALUE (00:02:30) tarkoittaa nykyistä aikaa + 2 min 30 s.

Jos nykyinen aika on 14:25:30, siitä tulee 14:28:00.

Voit pysäyttää tai keskeyttää koodisi suorittamisen nykyisestä ajasta seuraavaan 10 minuuttiin käyttämällä alla olevaa koodia.

Koodi:

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

On tärkeää käyttää NOW () -toimintoa tarkkaan taukoon, muuten on todennäköistä, että Excel-työkirjasi keskeytettiin keskiyöhön asti. Voimme kuitenkin palata taukomenetelmästä milloin tahansa painamalla Esc- tai Break-näppäintä.

Esimerkki 2

Odota 10 sekuntia joka kerta, kun silmukka suoritetaan

Odotustapaa käytetään hyvin silmukoiden kanssa. On tilanteita, joissa saatat joutua odottamaan 10 sekuntia joka kerta ajon aikana. Katso esimerkiksi alla olevia tietoja.

Voit laskea voiton = (Myynti - Kustannukset), jonka haluat luoda silmukan, ja jokaisen silmukan jälkeen haluat odottaa 10 sekuntia tarkistaaksesi, onko tulos tarkka vai ei. Alla oleva koodi tekee sen.

Koodi:

 Sub Wait_Example3 () Dim k kokonaislukuna k = 2-9 soluun (k, 4). Arvo = Solut (k, 2) - Solut (k, 3) Application.Wait (Now () + TimeValue ("00:00) : 10 ")) Seuraava k End Sub 

Tämä koodi laskee voittosarakkeen rivi riviltä. Ensimmäisen rivin valmistuttua se odottaa 10 sekuntia ennen kuin se laskee seuraavan rivin.

VBA Sleep vs VBA Wait

VBA NUKU VBA ODOTA
Se ei ole sisäänrakennettu VBA-toiminto, tarvitsee erityiskoodin käyttääksesi tätä toimintoa. Se on sisäänrakennettu VBA-toiminto, ei vaadi erityistä koodia tämän toiminnon käyttämiseen.
Uni vaatii millisekunteja aikatauluna. Odota edellyttää säännöllistä aikataulua.
Voimme viivästyttää koodia millisekunteina Voimme viivästyttää vain kokonaisia ​​sekunteja.

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