VBA Pauză | Întrerupeți codul VBA utilizând funcția Sleep și Wait

Întrerupeți codul VBA să ruleze

Pauza VBA este utilizată pentru a întrerupe codul de la executarea acestuia pentru o anumită perioadă de timp și pentru a întrerupe un cod în VBA folosim metoda application.wait.

Când construim proiecte VBA mari după efectuarea a ceva, este posibil să trebuiască să așteptăm ceva timp pentru a face alte sarcini. În astfel de scenarii, cum să întrerupem codul macro pentru a ne îndeplini sarcina? Putem întrerupe codul VBA pentru o perioadă de timp specificată utilizând două funcții, iar acele funcții sunt „Așteptați” și „Adormiți”.

Cum să întrerupeți codul utilizând metoda de așteptare?

„Așteptați” este funcția pe care o folosim în VBA pentru a menține macrocomanda rulată pentru o anumită perioadă de timp. Prin aplicarea acestei funcții trebuie să menționăm până la ce oră ar trebui să aștepte codul nostru.

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

De exemplu, dacă executați codul la 13:00:00, dacă furnizați ora ca „13:15:00”, atunci acesta va menține macrocomanda rulată timp de 15 minute.

Acum, uitați-vă la argumentul funcției WAIT în VBA.

În argumentul timpului, trebuie să menționăm la ce oră ar trebui să ne întrerupă sau să aștepte codul nostru.

De exemplu, uitați-vă la codul VBA de mai jos.

Cod:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " Pentru VBA „Terminați sub 

Amintiți-vă în timp ce rulați acest cod, sistemul meu este ora 13:00:00, de îndată ce rulez codul, acesta va executa primele două linii, adică

Interval ("A1"). Valoare = "Bună ziua" și Interval ("A2"). Valoare = "Bun venit"

Dar dacă te uiți la următoarea linie, scrie Application.Wait („13:15:00”), așa că după executarea acelor sarcini de linie macro-ul meu va fi întrerupt timp de 15 minute, adică de la 13:00:00 va aștepta până când sistemul meu timpul ajunge la 13:15:01.

Odată ce timpul meu de sistem ajunge la acel moment, va executa liniile de cod rămase.

Interval ("A3"). Valoare = "To VBA"

Cu toate acestea, acesta nu este cel mai bun mod de a practica codul de pauză, să presupunem că executați codul în momente diferite, atunci trebuie să folosim funcția ACUM VBA cu funcția TIME VALUE.

Funcția Now returnează data și ora curente conform sistemului la care lucrăm.

Funcția TIME Value menține timpul de la 00:00:00 la 23:59:29.

Ok, presupunem că trebuie să întrerupem codul timp de 10 minute ori de câte ori rulăm codul, apoi putem folosi codul de mai jos.

Cod:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Valoare =" To VBA "End Sub 

Acest lucru este similar cu codul anterior, dar singura diferență este că am adăugat funcția NOW & TIME VALUE.

Ori de câte ori rulăm acest cod, acesta va ține sau va întrerupe execuția timp de 10 minute.

Cum să întrerupeți codul VBA utilizând metoda Sleep?

Somnul este o funcție complicată în VBA, deoarece nu este o funcție încorporată. Deoarece nu este încorporat pentru a-l face disponibil, trebuie să adăugăm codul de mai jos în partea de sus a modulului nostru.

Cod:

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

Trebuie doar să copiați codul de mai sus și să-l lipiți în partea de sus a modulului.

Motivul pentru care trebuie să adăugăm codul de mai sus, deoarece SLEEP este o funcție VBA prezentată în fișierele Windows DLL, deci trebuie să declarăm nomenclatura înainte de a începe subprocedura.

Ok, să ne uităm la exemplul funcției SLEEP acum.

Cod:

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

În primul rând, am declarat două variabile ca Șir.

 Dim StartTime as String Dim EndTime As String 

Apoi am atribuit funcția TIME excel variabilei StartTime. Funcția TIME returnează ora curentă conform sistemului.

StartTime = Ora

Apoi, am atribuit același lucru să se afișeze în caseta de mesaj.

MsgBox StartTime

Apoi am aplicat funcția SLEEP ca Sleep (10000).

Aici 10000 este milisecunde, care este egal cu 10 secunde în VBA.

Apoi, în sfârșit, am atribuit încă o funcție TIME variabilei EndTime .

Acum am scris din nou un cod pentru a arăta ora.

EndTime = Ora

Aceasta va arăta diferența dintre ora de început și ora de sfârșit.

Acum voi executa codul și voi vedea care este ora de început.

Când execut codul, ora sistemului este 13:40:48 și acum codul meu va dormi 10 secunde. La final, timpul meu este următorul.

Deci, astfel, putem întrerupe codul de la executarea acestuia pentru o anumită perioadă de timp.