Lucrul cu bucle infinite

Probabil vă veți da seama când o procedură este blocată într-o buclă infinită: veți observa că procedura pur și simplu nu încetează să se execute. Dacă deschideți Managerul de activități al Windows (Task Manager), acesta va raporta că aplicația dvs. a "încetat să mai răspundă" - stopped responding. Pentru a întrerupe o buclă infinită, apăsați Ctrl + Break. Editorul VBA afișează apoi o casetă de dialog Code Execution Has Been Interrupted. Buclele infinite sunt cunoscute și sub denumirea de bucle interminabile - endless loops.

Există mai multe modalități de a vă bloca codul în bucle infinite, cum ar fi utilizarea instrucțiunilor GoTo fără condiții If sau bucle Do fără constrângerile While sau Until. Acestea sunt destul de ușor de evitat, dar chiar dacă faceți acest lucru, este încă posibil să apară bucle infinite în cod din cauza condițiilor care nu au putut fi anticipate.

Cea mai bună modalitate de a aborda detectarea și eliminarea unei bucle infinite este utilizarea punctelor de întrerupere sau a unei expresii de urmărire pentru a identifica locul în care procedura intră în bucla infinită. După ce ați ajuns la aceasta, utilizați comanda Step Into pentru a intra în procedură. Apoi folosiți fereastra Watch sau fereastra Locals pentru a observa variabila și expresiile din buclă, care ar trebui să indice când ceva nu merge bine și care fac ca bucla să fie nesfârșită.

Dacă codul conține o buclă care ar trebui să execute doar un număr stabilit de ori, dar suspectați că funcționează la nesfârșit, puteți introduce în buclă o variabilă cu rol de contor, într-o structură If ... Then, o structură care declanșează fie o instrucțiune Exit For, fie o instrucțiune Exit Do pentru a ieși din buclă dacă rulează mai mult de un anumit număr de ori.