TOP

VBA-Lecția 2. Depanator (Debugger)

YouLibreCalc for Excel logo

Un instrument în mediul VBA pentru depanarea codului programului. A putea lucra cu un depanator este vital pentru oricine scrie pe VBA. Este necesar pentru a verifica cum funcționează codul dvs. și pentru a găsi și remedia erorile din acesta.


Deschideți Visual Basic Editor (Alt+F11). Creați un modul în el și scrieți următorul cod:

 Sub LearningDebug()
    Dim A As Long, B As Long, C As Long, D As Long

    D = 0
    A = 10
    Debug.Print "A = " + Trim(Str(A))
    B = 15
    Debug.Print "B = " + Trim(Str(B))
    C = A + B
    Debug.Print "C = " + Trim(Str(C))
    C = Round(C / 5)
    Debug.Print "Divide С by 5: C = " + Trim(Str(C))  'C se împarte la 5: C =
    C = Round(C / D) 'va exista o eroare aici, deoarece este imposibil de împărțit la zero (și D = 0)
End Sub

Apăsați Ctrl+G și va apărea fereastra Immediate în partea de jos. În această fereastră, în timpul funcționării macro-ului, puteți modifica valorile variabilelor, puteți executa cod diferit pe VBA, care nu este scris înainte în modul.

Dacă plasați cursorul în interiorul codului modulului și apăsați F5, acesta va fi executat complet. Dacă apăsați F8, va fi executată o singură linie de cod. Următoarea apăsare a F8 va executa următoarea linie de cod și așa mai departe. puteți parcurge întregul cod. Puteți crea un punct de întrerupere folosind butonul F9. Dacă apoi rulați codul utilizând tasta F5, codul va rula la linia specificată și apoi se va întrerupe. Apoi poate fi continuat folosind butoanele F5 sau F8 descrise mai devreme.

Dacă te uiți cu atenție la cod, vei vedea că variabilelor A, B, C, D li se atribuie numere. Liniile „text” Debug.Print imprimă textul pe care l-am specificat în fereastra Immediate deschisă anterior pentru a vedea ce se întâmplă cu variabila. Str(A) convertește un număr într-o valoare text. Și Trim() elimină spațiile la dreapta și la stânga din el. Operatorul Round(C) rotunjește valoarea conform regulilor de aritmetică la un număr întreg (prin urmare, atribuim rezultatul calculului unei variabile întregi Long, ceea ce înseamnă că trebuie să fie un număr întreg). La sfârșitul codului, am creat în mod special o situație falsă pentru a practica folosirea depanatorului.

Stați în interiorul codului și apăsați F8 de patru ori. Linia care va fi executată în continuare va fi marcată cu galben. Plasați cursorul peste diferitele variabile. În același timp, va apărea o fereastră pop-up în care veți vedea valoarea acestora. Variabilele cărora nu li s-au atribuit încă valori sunt egale cu zero. Apăsați din nou F8. În fereastra Immediate va apărea o linie: A = 10 Acum putem schimba valoarea variabilei A imediat în fereastra Immediate (de exemplu, schimbați-o la 8). Pentru a face acest lucru, într-o nouă linie a ferestrei Immediate, scrieți: A = 8 și apăsați Enter. Acum treceți cursorul peste variabila A și vedeți că valoarea acesteia este 8. pentru a vedea valoarea fără a trece cu mouse-ul, o puteți face să apară în fereastra Immediate. Se face așa, introduceți în linia goală a ferestrei Immediate: ?A și apăsați Enter. Semn? în fereastra Immediate înseamnă același lucru cu Debug.Print din cod. Este mai ușor și mai scurt să scrii așa. Veți vedea imediat numărul - rezultatul solicitării dvs.

Plasați cursorul pe ultima linie de cod (C = Round (C / D)) și apăsați F9. Va apărea un punct de întrerupere. Îl puteți elimina cu același buton, dar nu îl vom elimina încă. Apăsați F5, programul va executa toate liniile și se va opri la ultima. În fereastra Immediate vor apărea mesaje despre atribuirea de valori variabilelor. Am ajuns la ultima linie de cod. Ar trebui să arunce o eroare deoarece conține împărțirea la zero. Apăsați F8 și vedeți singur. În fereastra care apare, faceți clic pe Debug. Dacă apăsați End, execuția programului se va opri și vrem să-l terminăm.

Puteți corecta situația schimbând valoarea variabilei D. Acum este egală cu zero. În fereastra Immediate, introduceți textul: D = 2 într-o linie goală și apăsați Enter. Acum, cu ultima linie de cod, împărțim nu la zero, ci la 2, evitând astfel o eroare. Apăsați F5 și programul își va finaliza activitatea fără erori.

Încercați să schimbați codul și exersați-vă folosind depanatorul. Crede-mă, îți va face viața mult mai ușoară.