Funcția de repaus VBA Excel pentru a vă întrerupe codul macro

Funcția de somn Excel VBA

Funcția VBA Sleep este o funcție Windows prezentă în fișierele DLL Windows, care este utilizată pentru a opri sau a întrerupe procedura macro pentru a rula pentru o anumită perioadă de timp după ce o anumită cantitate de noi putem relua programul.

Există situații în care trebuie să întrerupem procesul de rulare a macro-ului pentru a finaliza alte seturi de sarcini. Alte seturi de sarcini ar putea face parte din codificarea noastră sau parte a altei proceduri macro sau ar putea fi introduse pentru macro-ul curent Excel. Cum puteți întrerupe programul atunci când rulează? Putem întrerupe codul de procedură pentru o perioadă de timp specificată de utilizator și, după aceea, o anumită cantitate din noi putem relua programul. Putem face acest lucru în VBA folosind funcția SLEEP.

Ce face funcția VBA Sleep?

SLEEP, deoarece numele în sine spune „dormi o vreme”, „odihnește-te ceva timp”, „întrerupe-te timp”, oprește-te o perioadă de timp ”etc. Funcția Sleep permite utilizatorilor să întrerupă codul nostru macro pentru milisecunde. Folosind aceasta putem întârzia procesul de cod macro.

Dacă credeți că avem o funcție încorporată numită SLEEP, atunci vă înșelați, deoarece în VBA nu există o astfel de funcție, mai degrabă avem o funcție numită Sleep ca funcție Windows. Prin introducerea unui set special de cod, putem apela de fapt această funcție în VBA. De fapt, este o funcție prezentă în fișierele DLL Windows, așa că trebuie să declarăm nomenclatorul API înainte de începerea subrutinei în vba.

Mai jos este codul VBA.

Cod:

# Dacă VBA7, atunci Publicul declară PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Pentru versiunile Excel pe 64 de biți # Altele Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Pentru versiunile pe 32 de biți ale Excel # End If 

Copiați cele de mai sus și lipiți-le în modul înainte de a începe să scrieți codurile macro. Ar trebui lipit astfel în modulul dvs.

Exemplu

Înainte de a vă arăta modul de scriere a codului, permiteți-mi să vă spun despre funcția de somn puțin mai mult. Întârzie procesul în milisecunde. Deci, 1 secundă este egal cu 1000 de milisecunde, dacă doriți să faceți o pauză timp de 10 secunde, ar trebui să fie de 10000 de milisecunde.

Puteți descărca acest șablon Excel VBA Sleep aici - Șablon Excel VBA Sleep

Exemplul nr. 1

Odată ce codul API a fost lipit înainte de începerea procedurii Sub, creați un nume de macro.

Cod:

# Sub Sleep_Example1 () End Sub 

Declarați două variabile ca un șir.

Cod:

 Dim StartTime as String Dim EndTime As String 

Pentru variabila StartTime atribuiți valoarea funcției TIME. Notă: TIME în funcția excel returnează ora curentă.

Cod:

StartTime = Ora

Acum vom afișa acest mesaj în caseta de mesaje VBA.

Cod:

StartTime = Ora MsgBox StartTime

Acum vom întrerupe codul timp de 10 secunde folosind funcția de repaus. După cum am spus, întrerupe codul în milisecunde, așa că, pentru a face o pauză timp de 10 secunde, trebuie să folosim 10000 milisecunde.

Cod:

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

Acum utilizați a doua variabilă EndTime și atribuiți ora curentă.

Cod:

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

Acum, două variabile StartTime și EndTime vor păstra ora de început și ora de sfârșit a macro-ului. Rulați această macrocomandă, la început vom vedea ora de pornire a macrocomenzii, adică ora curentă din sistemul dvs.

Faceți clic pe OK, va dormi 10 secunde. Puteți vedea simbolul tampon.

După 10 secunde va începe să reia codul, așa că va afișa ora de încheiere, adică după ce așteptați 10 secunde care este ora curentă acum.

Acum puteți vedea macro-ul a început la 10:54:14 și s-a încheiat la 10:54:24, adică exact diferența de 10 secunde este acolo. În acele 10 secunde, VBA întrerupe codul care rulează.

Exemplul # 2 - Funcția Sleep în bucle

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.