Funcții VBA Wait & Sleep - Pauză / Întârziere Cod VBA

Acest tutorial va arăta cum să întrerupeți / întârziați codul utilizând funcțiile de așteptare și repaus din VBA.

Când creăm programe VBA mari care efectuează o mulțime de calcule, sau poate chiar apelăm programul extern pentru a rula, este posibil să cerem codul nostru VBA să nu mai ruleze pentru o anumită perioadă de timp în timp ce are loc procesul extern. VBA are câteva metode disponibile pentru a realiza acest lucru.

Utilizarea aplicației. Metoda de așteptare

Dacă trebuie să întrerupem funcționarea macrocomenzii pentru o perioadă de timp sau până la atingerea unui anumit timp înainte de a executa pasul următor, putem folosi Aplicație. Așteptați metodă. Acest lucru ar putea fi util, de exemplu, dacă am automatizat un proces de conectare la un site web și trebuie să așteptăm câteva secunde până când pagina este încărcată înainte ca macro-ul nostru să ruleze în continuare.

Așteptați 1 secundă

Includând această linie de mai jos în macrocomanda dvs., rularea acestuia va fi întreruptă timp de aproximativ 1 secundă:

1 Application.Wait (Now + TimeValue ("0:00:01"))

Asteapta pana cand

În unele cazuri, va trebui să așteptați până la o anumită oră. Cu această linie sub macro-ul dvs. nu va continua înainte de 9am:

1 Aplicație. Așteptați „09:00:00”

Vă rugăm să rețineți că Aplicație. Așteptați nu acceptă întârzieri mai mici de 1 secundă.

Programare VBA | Generatorul de coduri funcționează pentru dvs.!

Utilizarea metodei de somn

Dacă aveți nevoie de un mod mai precis de întrerupere a macro-ului, puteți utiliza metoda Sleep.

Sleep este o funcție API Windows, adică nu face parte din VBA. Se poate accesa utilizând o declarație specială.

Dacă utilizați versiunea pe 64 de biți a Microsoft Office, puteți insera următoarea declarație într-un nou modul sau la începutul modulului (nu direct în subrutină) doriți să utilizați funcția Sleep în:

1 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Cu versiunea pe 32 de biți utilizați această linie:

1 Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

După declararea funcției Sleep, aveți acces la aceasta în subrutine de acest fel:

1 Dormi 10000

Cu această linie deasupra macro-ului dvs. va fi întrerupt timp de 10.000 de milisecunde, adică 10 secunde.

Folosirea unui Loop cu Do Events

Marele dezavantaj al utilizării metodelor Wait and Sleep este că utilizatorul nu poate face nimic în Excel în timp ce așteaptă continuarea macro-ului. Un utilizator ar putea crede că Excel nu mai răspunde și în timp ce utilizatorul îl poate utiliza Ctl + Break pentru a întrerupe macro-ul, acesta învinge scopul de a pune o pauză în macro pentru a începe cu.

Pentru a depăși această problemă, putem folosi o buclă cu o metodă numită DoEvents.

1234567 Subtest public ()Dim i As LongPentru i = 1 până la 20000Interval („A1”). Valoare = iDoEventsApoi euSfârșitul Sub

Acum, în timp ce Excel rulează macro-ul de mai sus, utilizatorul poate continua să interacționeze cu Excel - putem schimba file sau formata celule, de exemplu - practic, macro-ul continuă să ruleze, dar ecranul Excel nu este înghețat. Am putea folosi o buclă similară pentru a crea o funcție de temporizare în Excel și pentru a încorpora DoEvents metoda prin care să dezghețați ecranul în timp ce cronometrul rulează.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave