Exceli VBA unefunktsioon teie makrokoodi peatamiseks

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 need võivad olla sisestatud praeguse Exceli makro jaoks. Kuidas saate programmi töötamise ajal peatada? Võime peatada protseduurikood mõneks ajaks, mille kasutaja on määranud, ja pärast seda saame programmi jätkata. Saame seda teha VBA-s, kasutades funktsiooni SLEEP.

Mida teeb VBA unefunktsioon?

SLEEP, kuna nimi ise ütleb „magada mõnda aega”, „puhata mõnda aega”, „pausi ajaks”, mõnda aega puhata ”jne. Unefunktsioon võimaldab kasutajatel meie makrokoodi millisekunditeks peatada. Selle kasutamine võib makrokoodi protsessi edasi lükata.

Kui arvate, et meil on sisseehitatud funktsioon nimega SLEEP, siis te eksite, sest VBA-s sellist funktsiooni pole, pigem on meil Windowsi funktsioonina nimega Sleep. Spetsiaalse koodikomplekti sisestamise abil võime seda funktsiooni VBA-s tegelikult kutsuda. Tegelikult on see funktsioon Windowsi DLL-failides, nii et peame enne API-s 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 # Muu avalik deklareerida Sub Sleep Lib" kernel32 "(ByVal dwMillisekundid nii kaua)" Exceli # lõpp, 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. Seega on 1 sekund võrdne 1000 millisekundiga, kui soovite 10-sekundilist pausi teha, peaks see olema 10000 millisekundit.

Selle VBA Sleep Exceli malli saate alla laadida siit - VBA Sleep Exceli mall

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 ütlesin, peatab see koodi millisekundites, nii et 10 sekundi pausi tegemiseks 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 hoiab 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 sekundi 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 - unerežiim silmustes

Uni on VBA-s kõige parem kasutada 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 kui täisarv 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 kui täisarv 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 ​​- lõpuaega.

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


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