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 î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.

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 întrerupem sau să așteptăm 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 rulez acest cod, ora sistemului este 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”), deci 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 ora sistemului va 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ă rulați codul în momente diferite și apoi 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ă. Întrucât nu este încorporat pentru a-l face disponibil, va trebui să adăugăm codul de mai jos în partea de sus a modulului nostru.

Cod:

#If VBA7 Atunci publicul declară PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Pentru sistemele pe 64 de biți #Else 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 DLL Windows, 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, din nou, am scris 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, iar acum codul meu va dormi 10 secunde. În cele din urmă, timpul meu este după cum urmează.

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

Articole interesante...