Keskeytä VBA-koodin suorittaminen
VBA-taukoa käytetään keskeyttämään koodi suorittamasta sitä tietyn ajanjakson ajan ja keskeyttämään koodi VBA: ssa, jota käytämme application.wait-menetelmällä.
Kun rakennamme suuria VBA-projekteja suoritettuamme jotain, joudumme ehkä odottamaan jonkin aikaa tekemään muita tehtäviä. Kuinka tällaisissa tilanteissa keskeytämme makrokoodin tehtävämme suorittamiseksi? Voimme keskeyttää VBA-koodin tietyksi ajaksi käyttämällä kahta toimintoa, ja nämä toiminnot ovat "Odota" ja "Lepotila".

Kuinka keskeyttää koodi odotusmenetelmällä?
"Odota" on toiminto, jota käytämme VBA: ssa pitämään makron käynnissä tietyn ajan. Tätä toimintoa soveltamalla meidän on mainittava, mihin aikaan koodin odotetaan.
Esimerkiksi, jos suoritat koodia klo 13:00:00, jos annat kellonajaksi "13:15:00", se pitää makroa käynnissä 15 minuuttia.
Katsokaa nyt WBA-funktion argumenttia VBA: ssa.

Aika-argumentissa meidän on mainittava, milloin koodimme pitäisi keskeyttää tai odottaa.
Katso esimerkiksi alla olevaa VBA-koodia.
Koodi:
Ala-tauko_esimerkki1 () Alue ("A1"). Arvo = "Hei" -alue ("A2"). Arvo = "Tervetuloa" -sovellus.Odotus ("13:15:00") Alue ("A3"). Arvo = " VBA: lle "End Sub

Muista, että tätä koodia suoritettaessa järjestelmän aika on 13:00:00. Heti kun suoritan koodin, se suorittaa kaksi ensimmäistä riviä eli
Alue ("A1"). Arvo = "Hei" ja alue ("A2"). Arvo = "Tervetuloa"
Mutta jos katsot seuraavaa riviä, siinä lukee Application.Wait (“13:15:00”), joten näiden rivien tehtävien suorittamisen jälkeen makroni keskeytetään 15 minuutiksi, ts. Klo 13:00:00 lähtien. odottaa, kunnes järjestelmäaikani saavuttaa 13:15:01.
Kun järjestelmääni saavuttaa tuon ajan, se suorittaa jäljellä olevat koodirivit.
Alue ("A3"). Arvo = "VBA: lle"
Tämä ei kuitenkaan ole paras tapa harjoitella taukokoodia. Oletetaan, että käytät koodia eri aikoina, ja sitten meidän on käytettävä NYT VBA -toimintoa TIME VALUE -toiminnon kanssa.
Now- toiminto palauttaa nykyisen päivämäärän ja kellonajan työskentelemämme järjestelmän mukaan.
TIME Value -toiminto pitää ajan välillä 00:00:00 - 23:59:29.
Ok, oletetaan, että meidän on keskeytettävä koodi 10 minuutin ajaksi, kun suoritamme koodin, niin voimme käyttää alla olevaa koodia.
Koodi:
Ala-tauon_esimerkki1 () -alue ("A1"). Arvo = "Hei" -alue ("A2"). Arvo = "Tervetuloa" -sovellus. Odota (nyt () + TimeValue ("00:00:10")) -alue (" Arvo = "VBA: lle" loppuosa

Tämä on samanlainen kuin edellinen koodi, mutta ainoa ero on, että olemme lisänneet NOW & TIME VALUE -toiminnon.
Aina kun suoritamme tämän koodin, se pitää tai keskeyttää suorituksen 10 minuutin ajan.
Kuinka keskeyttää VBA-koodi lepotilassa?
Lepotila on monimutkainen toiminto VBA: ssa, koska se ei ole sisäänrakennettu toiminto. Koska se ei ole sisäänrakennettu, jotta se olisi käytettävissä, meidän on lisättävä alla oleva koodi moduulimme yläosaan.
Koodi:
#Jos VBA7 julkinen julistaa sitten PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMillisekunnit niin kauan kuin on) "64-bittisissä järjestelmissä #Else Public Declare Sub Sleep Lib" kernel32 "(ByVal dwMillisekunnit niin kauan) #End If '32-bittisissä järjestelmissä
Sinun tarvitsee vain kopioida yllä oleva koodi ja liittää se moduulin yläosaan.

Syy, miksi meidän on lisättävä yllä oleva koodi, koska SLEEP on VBA-toiminto, joka esitetään Windowsin DLL-tiedostoissa, joten meidän on ilmoitettava nimikkeistö ennen alimenettelyn aloittamista.
Ok, katsotaanpa nyt SLEEP-funktion esimerkkiä.
Koodi:
Sub Pause_Example2 () Himmennä StartTime merkkijonona Dim EndTime As String Aloitusaika = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub

Ensinnäkin olemme julistaneet kaksi muuttujaa merkkijonoksi.
Himmennä alkamisaika merkkijonona Himmennä loppuaika merkkijonona
Sitten olemme määrittäneet TIME excel -toiminnon StartTime-muuttujalle. TIME-funktio palauttaa nykyisen ajan järjestelmän mukaan.
StartTime = Aika
Sitten olemme määrittäneet saman näytettäväksi viestiruudussa.
MsgBox StartTime
Sitten olen käyttänyt SLEEP-toimintoa lepotilana (10000).
Tässä 10000 on millisekuntia, mikä on 10 sekuntia VBA: ssa.
Viimeinkin olen vihdoin määrittänyt yhden TIME-funktion muuttujalle EndTime .
Nyt olen jälleen kirjoittanut koodin ajan näyttämiseksi.
EndTime = aika
Tämä näyttää eron aloitusajan ja lopetusajan välillä.
Suoritan nyt koodin ja näen mikä aloitusaika on.

Kun suoritan koodin, järjestelmän aika on 13:40:48, ja nyt koodini nukkuu 10 sekuntia. Loppujen lopuksi aikani on seuraava.

Joten tällä tavoin voimme keskeyttää koodin suorittamisen tietyn ajan.