Excel VBA manipularea erorilor

Gestionarea erorilor este un mecanism foarte util și semnificativ pentru limbajele de programare precum VBA. Controlul sau prevenirea erorilor este un aspect al gestionării erorilor, ceea ce înseamnă să luați măsuri eficiente și semnificative în cadrul unui script VBA pentru a evita apariția mesajului pop-error

Diferite tipuri de erori în VBA

  1. Eroare de sintaxă sau eroare de analiză
  2. Eroare de compilare sau compilare
  3. Eroare de rulare
  4. Eroare logică

Erorile de mai sus pot fi corectate cu ajutorul debug-urilor menționate mai jos și a diferitelor declarații „On Error” inserate între un cod.

On Error Resume Next

La eroarea 0

În eroare Goto

În eroare Goto -1

Tratarea erorilor VBA cu ajutorul diferitelor declarații „ON ERROR”

Puteți descărca acest șablon Excel de gestionare a erorilor VBA de aici - șablonul VBA de gestionare a erorilor

Exemplul # 1 - Erori de compilare VBA

Când există o eroare într-o declarație sau sintaxa a codului VBA, atunci când greșești un cod greșit, acesta va fi evidențiat în culoare roșie, în funcție de opțiunile de setare din instrumente (Dacă ai selectat Verificarea sintaxei automate).

Va apărea o casetă de mesaj popup de eroare de compilare atunci când rulați codul cu sintaxa incorectă.

Cod:

 Sub SYNTAX_ERROR () MsgBox acesta este primul meu program End Sub 

„EROARE COMPILĂ: VARIABIL NICI DEFINAT” este cea mai frecventă eroare care apare ca un mesaj pop-up. când variabila de referință nu este definită, apare această eroare.

Cod:

 Sub VBA_FORMAT1 () A = 19049, 83 A = Format (A, "STANDARD") MsgBox A Sub End 

În exemplul de mai sus, nu am declarat tipul de variabilă ca String, prin urmare, apare această eroare. Deci, trebuie să declar o variabilă ca Dim A As String.

Cod:

 Sub VBA_FORMAT1 () Dim A As String A = 19049, 83 A = Format (A, "STANDARD") MsgBox A Sub End 

Exemplul # 2 - VBA Runtime Error

Când există o declarație sau termeni matematici imposibili într-o instrucțiune, atunci apare această eroare de rulare.

Cod:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Exemplul # 3 - Erori sau erori logice VBA

Aceste erori sunt foarte dificil de urmărit, nici nu vor fi evidențiate și nu apare mesajul de eroare pop-up. va rezulta în acțiuni neașteptate și rezultate incorecte.

Exemplu: Când două variabile sunt prezente în cod, acesta poate conține una incorectă. În acest caz, apare o eroare logică.

Cum să preveniți erorile în VBA?

Haideți să consultați Cum să preveniți diferitele tipuri de erori de mai sus în VBA Excel.

Pasul 1: Pentru a deschide o fereastră VB Editor Selectați sau faceți clic pe Visual Basic în grupul Cod din fila Dezvoltator sau puteți face clic direct pe tasta Alt + F11 .

Pasul 2: Pentru a crea un modul gol, sub obiectele Microsoft Excel, faceți clic dreapta pe foaia 1 (VB_ERROR HANDLING) și Insert Module, astfel încât să fie creat un nou modul blank.

VBA de gestionare a erorilor cu opțiunea de depanare

Este mai bine să compilați codul înainte de a-l rula. Pentru a urmări compilarea, trebuie urmați pașii de mai jos. În bara de instrumente cu meniul VB, sub opțiunea Debug, trebuie să selectăm un proiect VBA compilat. Când faceți clic pe acesta, verifică codul pas cu pas, după ce constată eroarea, îl va evidenția și apare mesajul pop-up, astfel va trebui să îl corectați. odată ce este corectat, trebuie să compilați pentru a găsi următoarea eroare în cod.

Notă: cu ajutorul opțiunii de compilare, putem rectifica numai eroarea de compilare și sintaxă.

Tratarea erorilor VBA cu ajutorul diferitelor declarații „ON ERROR”

1. On Error Resume Next

Aici, eroarea va fi ignorată și codul va continua.

În exemplul menționat mai jos, 6 nu poate fi împărțit la zero, dacă îl executați fără a introduce instrucțiunea On Error Resume Next, atunci apare mai jos eroare de rulare menționată.

Cod:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Dacă On Error Resume Next este introdus în partea de sus a codului după instrucțiunea Sub, ignoră eroarea de execuție și trece la următoarea declarație, ceea ce duce la ieșirea de 6/2 adică 3 (caseta de mesaj popup cu rezultatul acesteia).

Cod:

 Sub RUNTIME_2 () On Reînceperea erorii Următorul MsgBox 6/0 MsgBox 6/2 End Sub 

2. Pe Error GoTo 0 și Error GoTo -1

„On Error GoTo 0” va opri codul de pe linia specifică care provoacă eroarea și arată o casetă de mesaj care descrie sau indică eroarea.

Cod:

 Sub onError_Go_to_0 () La eroarea GoTo 0 Ucide "C: TempFile.exe" Interval ("A1"). Valoare = 100 / "PETER" Sub Sub 

De obicei, prezintă comportamentul implicit de verificare a erorilor, este semnificativ atunci când este utilizat împreună cu „On Error Resume Next”.

De obicei, puteți observa căsuța Mesaj de eroare Runtime, conține opțiuni „Continuare”, „Sfârșit”, „Debug” și „Ajutor” . hai să verificăm utilizările fiecăruia dintre ele.

  • Opțiunea Continuare va ignora excepția și va continua codul dacă este posibil.
  • Opțiunea finală încheie programul.
  • Opțiunea de depanare va evidenția declarația în care s-a produs eroarea. care vă ajută să depanați sau să corectați codul.
  • Opțiunea de ajutor vă va duce pentru a deschide pagina de ajutor Microsoft MSDN.

On Error GoTo 0 cu On Error Reîncepeți Următorul

Cod:

 Sub onError_Go_to_0_with_Resume_next () On Error Reîncepe Uciderea următoare "C: TempFile.exe" Pe eroarea GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub 

În codul de mai sus, va ignora erorile până când ajunge la instrucțiunea On Error GoTo 0. După instrucțiunea On Error GoTo 0, codul revine sau trece la verificarea normală a erorilor și declanșează eroarea preconizată. când rulez codul de mai sus, acesta va afișa eroarea de divizare, adică nepotrivirea tipului (valoarea numerică nu poate fi împărțită în text).

În eroarea GoTo 0 dezactivează orice captare de eroare prezentă în prezent în codul VBA, adică oprește tratarea erorilor din codul principal, în timp ce On Error GoTo -1 șterge tratarea erorilor și o setează la nimic, ceea ce vă ajută sau vă permite să creați o altă capcană de eroare.

3. La eroarea de a merge <LABEL

VBA pentru a transfera controlul programului pe linia urmată de etichetă dacă există erori de rulare, adică salturi de cod la eticheta specificată. Aici, declarațiile de cod dintre linia de excepție și etichetă nu vor fi executate.

Această metodă este mai potrivită și semnificativă pentru ieșirea cu grație a programului dacă apare o eroare fatală majoră în timpul execuției.

În codul VBA menționat mai jos, imediat ce apare eroarea la linia 3, programul transferă controlul pe linia 6, adică eticheta (mesajul Popup apare ca „Handler de excepție” ).

Cod:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Această linie nu va fi executată" Ieșire Sub Error_handler: MsgBox "excepție handler" End Sub 

Aici puteți observa că „Ieșirea Sub” trebuie folosită chiar înainte de eticheta „Error_handler:”, aceasta se face pentru a vă asigura că blocul de cod de gestionare a erorilor trebuie să se oprească sau să nu se execute dacă nu există nicio eroare. Acum, puteți salva cartea de lucru ca un „manual de lucru activat cu Excel”. Făcând clic pe salvare ca în colțul din stânga al foii de lucru.

Încă o dată dacă deschideți un fișier, puteți face clic pe tasta rapidă, adică Fn + Alt + f8, apare caseta de dialog „Macro”, unde puteți rula un cod macro salvat la alegere sau puteți face clic pe Fn + Alt + F11 pentru o fereastră macro completă.

Lucruri de amintit

  • Înainte de a scrie codul, trebuie să vă asigurați că, întreruperea erorilor necontrolate este verificată sau selectată în eroare. opțiune de captare în general în opțiunile instrumentului din bara de instrumente VBA.
  • Este o setare implicită care ajută la oprirea codului dvs. pentru erori care nu sunt gestionate.
  • Break on All Errors: Vă va opri codul pentru toate tipurile de erori.
  • Modul de clasă Break-in: În cazul în care un cod, cum ar fi formularul de utilizator este utilizat în cod, va evidenția că linia exactă care provoacă eroarea.

Articole recomandate

Acesta este un ghid pentru manipularea erorilor VBA. Aici vom discuta despre cum se utilizează VBA Error Management în Excel împreună cu câteva exemple practice și șablonul excel descărcabil. De asemenea, puteți parcurge și alte articole sugerate -

  1. VBA Declare Array (Exemple)
  2. VBA la eroare
  3. Foaie de protecție VBA
  4. Coloane VBA | Șabloane Excel
  5. VBA Environ

Categorie: