Excel VBA Break For Loop
În VBA Break For Loop este, de asemenea, cunoscut sub numele de exit for loop, fiecare buclă din orice procedură a primit un set de instrucțiuni sau criterii pentru ca aceasta să ruleze mai mult timp, dar este foarte obișnuit ca unele bucle să intre într-o buclă infinită, corupând cod în astfel de scenarii avem nevoie de pauză sau ieșire pentru buclă pentru a ieși din anumite situații.
Să presupunem că am instruit bucla să ruleze de 10 ori și, pe baza condiției date, dacă valoarea celulei sau orice alt criteriu furnizat are succes, atunci trebuie să părăsească bucla excel înainte de a finaliza cota completă a buclei de 10. În acest articol, vă vom arăta cum să ieșiți din buclă pe baza criteriilor date.

Cum să spargeți / ieșiți din bucle în VBA?
# 1 - Break For Next Loop
VBA For Next Loop este folosit pentru a face loop peste celule și a efectua un set specific de sarcini. De exemplu, uitați-vă la codul VBA de mai jos.
Cod:
Sub Exit_Loop () Dim K lung pentru K = 1 până la 10 celule (K, 1). Valoare = K Next K End Sub
Aceasta va insera numere de serie de la celula A1 la A10.

Acesta este lucrul evident cu For Next Loop.
Acum vreau să rup bucla atunci când orice valoare se găsește în primele 10 celule. Pentru aceasta, am introdus o valoare de text în celula A8.

Acum vreau să instruiesc acest lucru în cod, spunând „dacă celula de buclă are o anumită valoare, trebuie să părăsească bucla înainte de limita predeterminată”.
Cod:
Sub Exit_Loop () Dim K As Long For K = 1 to 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Else Exit For End If Next K End Sub
Uită-te la aceste linii de cod:
Dacă celulele (K, 1). Valoare = „” Atunci
celulele (K, 1). Valoarea = K
Altele
Ieșiți pentru
sfârșit Dacă
Se spune Dacă celulele (K, 1). Valoare = „celula de buclă nu este egală cu nimic, continuați bucla de inserare a numerelor de serie de la 1 la 10.
Ultima parte a buclei spune:
Altfel
Ieșiți pentru
Dacă condiția de mai sus nu este ADEVĂRATĂ, atunci bucla „Exit For”.
Acum rulați codul. Va introduce numere de serie până la celula A7.

Codul de mai sus a ieșit imediat din buclă fără să spună nimic; de unde știm că a ieșit din buclă.
Pentru a elimina această ambiguitate, trebuie să punem mai jos o singură casetă de mesaje VBA.
Cod:
Sub Exit_Loop () Dim K As Long For K = 1 to 10 If Cells (K, 1) .Value = "" Atunci Cells (K, 1) .Value = K Else MsgBox "Avem celulă necompletată, în celulă" & Celule (K, 1). Adresă & vbNewLine & „Ieșim din buclă” Ieșiți pentru End Dacă Next K End Sub
Când faceți o buclă prin celulă, dacă se găsește o celulă care nu este goală, aceasta va afișa mesajul care spune: „Avem o celulă ne-goală, în celula A8. Ieșim din buclă ”.

Aceasta va informa utilizatorul despre ieșirea buclei și cu o adresă de celulă. Dacă orice valoare este introdusă din greșeală, atunci putem verifica adresa celulei returnată în caseta de mesaj.
# 2 - Break Do Until Loop
La fel cum am ieșit pentru Next Loop, în mod similar, putem ieși din bucla „Do Until”. De exemplu, uitați-vă la codul de mai jos.
Cod:
Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Until K = 11 Cells (K, 1). Valoare = KK = K + 1 Loop End Sub
Acest cod îndeplinește și sarcina de a introduce numere de serie. De exemplu, dacă dorim să ieșim din buclă atunci când variabila „k” devine 6, trebuie să introducem criteriile ca IF k = 6 și apoi să ieșim din buclă.
Cod:
Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Until K = 11 If K <6 Then Cells (K, 1) .Value = K Else Exit Do End Dacă K = K + 1 Loop End Sub
Aceasta va rula bucla până când valoarea variabilă devine 6. După aceea, va ieși din buclă. Dacă doriți să afișați mesajul utilizatorului, atunci puteți adăuga și caseta de mesaj.
Cod:
Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Until K = 11 If K 5 "Exit Do End If K = K + 1 Loop End Sub
Acesta va afișa mesajul de mai jos.

Astfel, pe baza criteriilor date, putem ieși din buclă dacă criteriile sunt ADEVĂRATE sau altfel putem continua bucla.