VBA Odota ja Lepotoiminnot - Tauko / Viive VBA -koodi

Tämä opetusohjelma näyttää kuinka keskeyttää / viivyttää koodia VBA: n odotus- ja lepotoimintojen avulla.

Kun luomme suuria VBA -ohjelmia, jotka suorittavat paljon laskelmia, tai ehkä jopa kutsumme ulkoisen ohjelman suoritettavaksi, saatamme vaatia VBA -koodimme pysähtymään tietyksi ajaksi ulkoisen prosessin aikana. VBA: lla on muutamia menetelmiä tämän saavuttamiseksi.

Sovelluksen käyttö Odota menetelmä

Jos meidän on keskeytettävä makron toiminta jonkin aikaa tai kunnes tietty aika on saavutettu ennen seuraavan vaiheen suorittamista, voimme käyttää Sovellus Odota menetelmä. Tästä voi olla hyötyä esimerkiksi, jos olemme automatisoineet kirjautumisprosessin verkkosivustolle ja joudumme odottamaan muutaman sekunnin, kunnes sivu ladataan, ennen kuin makro jatkuu.

Odota 1 sekunti

Kun tämä rivi sisällytetään makroon, sen toiminta keskeytetään noin 1 sekunniksi:

1 Application.Wait (Nyt + TimeValue ("0:00:01"))

Odota kunnes

Joissakin tapauksissa sinun on odotettava tiettyyn aikaan. Tämän rivin alapuolella makro ei jatku ennen klo 9.00:

1 Sovellus. Odota "09:00:00"

Huomaa, että Sovellus Odota ei hyväksy alle 1 sekunnin viiveitä.

VBA -ohjelmointi | Koodigeneraattori toimii sinulle!

Unimenetelmän käyttö

Jos tarvitset tarkemman tavan keskeyttää makro, voit käyttää lepotilaa.

Lepotila on Windowsin sovellusliittymätoiminto, eli se ei ole osa VBA: ta. Siihen pääsee käsiksi käyttämällä erityistä ilmoitusta.

Jos käytät Microsoft Officen 64-bittistä versiota, voit lisätä seuraavan lausekkeen uuteen moduuliin tai sen moduulin alkuun (ei suoraan aliohjelmaan), jossa haluat käyttää lepotilaa:

1 Julkinen ilmoitus PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Käytä 32-bittisen version kanssa tätä riviä:

1 Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Kun olet ilmoittanut lepotilan, voit käyttää sitä aliohjelmissasi seuraavasti:

1 Nuku 10 000

Tämän rivin yläpuolella makronne keskeytetään 10 000 millisekunniksi eli 10 sekunniksi.

Silmukan käyttäminen tapahtumien kanssa

Odottamisen ja lepotilan käytön suuri haitta on, että käyttäjä ei voi tehdä mitään Excelissä odottaessaan makron jatkumista. Käyttäjä voisi ajatella, että Excel on lopettanut vastaamisen ja että käyttäjä voi sitten käyttää Ctl+tauko Makron keskeyttämiseksi tämä estää tarkoituksen asettaa tauko makroon aluksi.

Tämän ongelman ratkaisemiseksi voimme käyttää silmukkaa DoEvents -nimisellä menetelmällä.

1234567 Julkinen alitesti ()Dim niin kauanI = 1 - 20 000Alue ("A1"). Arvo = iDoEventsSeuraavaksi minäEnd Sub

Nyt kun Excel käyttää yllä olevaa makroa, käyttäjä voi jatkaa vuorovaikutusta Excelin kanssa - voimme esimerkiksi vaihtaa välilehtiä tai muotoilla soluja - pohjimmiltaan makro jatkuu, mutta Excel -näyttö ei ole jäädytetty. Voisimme käyttää samanlaista silmukkaa luomaan ajastintoiminnon Exceliin ja sisällyttämään sen DoEvents menetelmä, joka poistaa näytön jäätymisen ajastimen ollessa käynnissä.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave