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 koodin suorittaminen ja keskeytettävä jonkin aikaa, sitten on suoritettava. 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 nimessä itsessään sanotaan, se pitää suoritettavaa makrokoodia 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 esimerkkejä seuraavaksi.
WAIT-toiminnon syntaksi on seuraava.

Meidän on mainittava, kuinka kauan koodimme pitäisi keskeyttää. Kuten näet lopulta, siinä sanotaan Boolean. Tämä tarkoittaa, että se palauttaa tuloksen loogisina arvoina, kuten 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 julistaa sitten PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMillisekunnit niin kauanPT) "64-bittisille järjestelmille #Else Public Declare Sub Sleep Lib" kernel32 "(ByVal dwMillisekunnit niin kauan)" 32-bittisille järjestelmille loppuu, jos
Esimerkkejä Excel VBA Wait -toiminnon käytöstä
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.
Sanotaan aina, kun käytät koodia. Haluat odottaa 2 minuuttia, miten viittaat tähän koodissasi?
Joten voimme käyttää VBA NOW -toimintoa TIME VALUE -toiminnon avulla määritetyn ajan syöttämiseksi nykyisestä ajasta.
Vain muistuttaakseni, NOW () -toiminto palauttaa nykyisen päivämäärän ja kellonajan tietokonejärjestelmän 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 kellonaika 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 käy
Odotustapaa käytetään hyvin silmukoiden kanssa. On tilanteita, joissa saatat joutua odottamaan 10 sekuntia joka kerta, kun silmukka suoritetaan. Katso esimerkiksi alla olevia tietoja.

Voit laskea voiton = (Myynti - Kustannukset) luomalla silmukka, 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-uni vs. VBA-odotus
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. |