Funkcija mirovanja v Excelu VBA za zaustavitev makro kode

Funkcija mirovanja v programu Excel VBA

Funkcija mirovanja VBA je funkcija okna, ki je prisotna v datotekah DLL Windows in se uporablja za zaustavitev ali zaustavitev postopka makra za določen čas po tem, ko lahko določeno količino programa nadaljujemo.

Obstajajo situacije, ko moramo zaustaviti postopek izvajanja makra, da dokončamo druge naloge. Drugi sklopi nalog so lahko del našega kodiranja ali del drugega postopka makra ali pa lahko vnos za trenutni makro excel. Kako lahko zaustavite program, ko se izvaja? Kodo postopka lahko zaustavimo za nekaj časa, ki ga določi uporabnik, in po tem lahko določeno količino programa nadaljujemo. To lahko storimo v VBA s funkcijo SLEEP.

Kaj počne funkcija VBA spanja?

SPANJE, saj že samo ime pravi »nekaj časa spi«, »nekaj časa počivaj«, »začasno ustavi«, nekaj časa odmori «itd. Funkcija spanja uporabnikom omogoča, da zaustavijo našo kodo makra za milisekunde. S tem lahko zakasnimo postopek makro kode.

Če menite, da imamo vgrajeno funkcijo SLEEP, se motite, ker v VBA take funkcije ni, temveč imamo funkcijo spanje kot funkcijo windows. Z vnosom posebnega nabora kode lahko to funkcijo dejansko pokličemo v VBA. Pravzaprav gre za funkcijo, ki je prisotna v datotekah Windows DLL, zato moramo nomenklaturo API razglasiti pred začetkom podprograma vba.

Spodaj je koda VBA.

Koda:

# Če VBA7 potem javno prijavi PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Za 64-bitne različice Excela # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Za 32-bitne različice Excel # End If 

Kopirajte zgornje in prilepite v svoj modul, preden začnete pisati kode makrov. Tako naj bo prilepljen v vaš modul.

Primer

Preden vam pokažem način pisanja kode, naj vam še malo povem o funkciji spanja. Zakasni postopek v milisekundah. Torej 1 sekunda je enaka 1000 milisekund, če želite začasno ustaviti 10 sekund, mora biti 10000 milisekund.

To predlogo VBA Sleep Excel lahko prenesete tukaj - Predloga VBA Sleep Excel

Primer # 1

Ko kodo API prilepite pred začetkom postopka Sub, ustvarite ime makra.

Koda:

# Sub Sleep_Example1 () Konec Sub 

Navedite dve spremenljivki kot niz.

Koda:

 Zatemni čas začetka kot niz Zatemni čas začetka kot niz 

Za spremenljivko StartTime dodelite vrednost funkcije TIME. Opomba: TIME v funkciji excel vrne trenutni čas.

Koda:

StartTime = Čas

Zdaj bomo to sporočilo prikazali v polju za sporočila VBA.

Koda:

StartTime = Time MsgBox StartTime

Zdaj bomo kodo zaustavili za 10 sekund s pomočjo funkcije spanja. Kot sem že povedal, kodo zaustavi v milisekundah, zato moramo za 10 sekund uporabiti 10000 milisekund.

Koda:

 Sub Sleep_Example1 () Dim StartTime kot niz Dim Dim EndTime kot niz StartTime = Time MsgBox StartTime Sleep (10000) End Sub 

Zdaj uporabite drugo spremenljivko EndTime in dodelite trenutni čas.

Koda:

 Sub Sleep_Example1 () Dim StartTime kot niz Dim Dim EndTime kot niz StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Zdaj dve spremenljivki StartTime in EndTime vsebujeta začetni in končni čas makra. Zaženite ta makro, najprej bomo videli začetni čas makra, tj. Trenutni čas v vašem sistemu.

Kliknite V redu, zaspal bo 10 sekund. Vidite lahko simbol medpomnilnika.

Po 10 sekundah začne s kodo nadaljevati, tako da bo prikazal čas konca, tj. Po čakanju 10 sekund, koliko je trenutno trenutnega časa.

Zdaj lahko vidite, da se je makro začel ob 10:54:14 in končal ob 10:54:24, tj. Točno 10-sekundna razlika je tam. V teh 10 sekundah VBA zaustavi zagnano kodo.

2. primer - funkcija spanja v zankah

Sleep is best used with loops in VBA. For example, I want to insert serial numbers from 1 to 10 using Do while loop in VBA.

After inserting the one number my code should wait for 3 seconds, so when the loop runs for 10 times it should be 30 seconds in total.

Code:

 Sub Sleep_Example2() Dim k As Integer k = 1 Do While k <= 10 Cells(k, 1).Value = k k = k + 1 Sleep (3000) '1000 milliseconds is 1 second so 3000 is equal to 3 seconds Loop End Sub 

Run this code and you have to wait for a minimum of 30 seconds to complete the process.

To track the exact time use the below code.

Code:

 Sub Sleep_Example2() Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Your Code Started at " & StartTime k = 1 Do While k <= 10 Cells(k, 1).Value = k k = k + 1 Sleep (3000) '1000 milliseonds is 1 second so 3000 is equal to 3 seconds Loop EndTime = Time MsgBox "Your Code Ended at " & EndTime End Sub 

This code will display you 2 message box, the first one will show the starting time and the second one will show the end time.

Note: While running this code, you cannot use excel, even the escape key will not work.