Exceli VBA unefunktsioon teie makrokoodi peatamiseks

Lang L: none (table-of-contents)

Exceli VBA unefunktsioon

Funktsioon VBA Sleep on Windowsi DLL-failide all olev Windowsi funktsioon, mida kasutatakse makroprotseduuri teatud aja jooksul töötamise peatamiseks või peatamiseks pärast seda, kui saame programmi jätkata.

On olukordi, kus peame oma makrojooksuprotsessi teiste ülesannete täitmiseks peatama. Muud ülesannete komplektid võivad olla osa meie kodeerimisest või mõne muu makroprotseduuri osadest või sisestatud praeguse Exceli makro jaoks. Kuidas saate programmi töötamise ajal peatada? Me võime protseduuri koodeksi kasutaja määratud ajaks peatada ja pärast seda saame teatud osa programmist jätkata. Saame seda teha VBA-s, kasutades funktsiooni SLEEP.

Mida teeb VBA unefunktsioon?

SLEEP, nagu nimi ise ütleb, "magage mõnda aega", "puhake mõnda aega", "mingiks ajaks paus", mõni aeg on vaba aeg jne jne. Unefunktsioon võimaldab kasutajatel meie makrokoodi millisekunditeks peatada . Seda kasutades võime makrokoodi protsessi edasi lükata.

Kui arvate, et meil on sisseehitatud funktsioon nimega SLEEP, siis eksite, sest VBA-s sellist funktsiooni pole. Pigem on meil Windowsi funktsioon nimega Sleep. Spetsiaalse koodide komplekti sisestamisega võime seda funktsiooni VBA-s tegelikult kutsuda. Tegelikult on see funktsioon Windowsi DLL-failides, seega peame enne VBA alamprogrammi algust deklareerima API nomenklatuuri.

Allpool on VBA kood.

Kood:

# Kui VBA7 siis avalik deklareerida PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) "Exceli 64-bitiste versioonide jaoks #Else Public Declare Sub Sleep Lib" kernel32 "(ByVal dwMilliseconds As Long)" 32-bitiste versioonide jaoks Excel # Lõpeta, kui

Kopeerige ülaltoodud ja kleepige oma moodulisse enne makrokoodide kirjutamise alustamist. See peaks olema moodulisse kleebitud nii.

Näide

Enne kui näitan teile koodi kirjutamise viisi, lubage mul veidi rohkem rääkida unefunktsioonist. See viivitab protsessi millisekundites. Nii et 1 sekund võrdub 1000 millisekundiga, kui soovite 10-sekundilist pausi teha, peaks see olema 10000 millisekundit.

Näide 1

Kui API-kood on enne alamprotseduuri algust kleebitud, looge makro nimi.

Kood:

#Sub Sleep_Example1 () End Sub

Deklareerige stringina kaks muutujat.

Kood:

Hämarda algusaeg stringina Hämarda lõpuaeg stringina

Sest Algusaeg muutuja määrata väärtus aja funktsioon. Märkus . Funktsioon TIME tagastab praeguse aja.

Kood:

StartTime = aeg

Nüüd kuvame selle teate sõnumikastis VBA.

Kood:

StartTime = Time MsgBox StartTime

Nüüd peatame koodi unefunktsiooni abil 10 sekundit. Nagu ma ütlesin, peatab see koodi millisekundites, nii et peatada 10 sekundit. Peame kasutama 10000 millisekundit.

Kood:

Alam-unerežiimi_näide1 () Dim StartTime stringina Dim EndTime as String StartTime = Time MsgBox StartTime Sleep (10000) End Sub

Nüüd kasutage teist muutujat EndTime ja määrake praegune aeg.

Kood:

Alam Sleep_Eexample1 () Dim StartTime as String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub

Nüüd sisaldab kaks muutujat StartTime ja EndTime makro algus- ja lõppaega . Käivitage see makro; alguses näeme teie süsteemis makro algusaega, st praegust kellaaega.

Klõpsake nuppu OK. See magab 10 sekundit. Näete puhvri sümbolit.

10 sekundi pärast hakkab see koodi jätkama, nii et see näitab lõpuaega, st pärast 10-sekundilist ootamist, mis praegu on.

Nüüd näete, et makro algas kell 10:54:14 ja lõppes kell 10:54:24, st täpselt 10-sekundiline vahe on olemas. Selle 10 sekundi jooksul peatab VBA koodi töötamise.

Näide 2 - unefunktsioon aasades

Uni on VBA-s kõige parem kasutada koos silmustega. Näiteks tahan sisestada seerianumbrid vahemikus 1 kuni 10, kasutades VBA-s funktsiooni Do while loop.

Pärast ühe numbri sisestamist peaks minu kood ootama 3 sekundit, nii et kui silmus töötab 10 korda, peaks see kokku olema 30 sekundit.

Kood:

Alam-unerežiimi_näide2 () Dim k täisarvuna k = 1 Do Kuigi k <= 10 rakku (k, 1). Väärtus = kk = k + 1 Sleep (3000) '1000 millisekundit on 1 sekund, nii et 3000 võrdub 3 sekundiga Loop End Alam

Käivitage see kood ja peate protsessi lõpuleviimiseks ootama vähemalt 30 sekundit.

Täpse aja jälgimiseks kasutage allolevat koodi.

Kood:

Alam-Sleep_Eexample2 () Dim k täisarvuna Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Teie kood algas" & StartTime k = 1 Do Kuigi k <= 10 lahtrit (k, 1). Väärtus = kk = k + 1 unerežiim (3000) '1000 millisekundit on 1 sekund, seega on 3000 võrdne 3 sekundiga. Loop EndTime = Time MsgBox "Teie kood lõppes" & EndTime End Sub

See kood kuvab teile 2 sõnumikasti, esimene näitab algusaega ja teine ​​näitab lõpu aega.

Märkus. Selle koodi käivitamise ajal ei saa te Exceli kasutada. Isegi põgenemisvõti ei tööta.

Huvitavad Artiklid...