Declarații de eroare VBA - Top 3 moduri de gestionare a erorilor

Declarație de eroare VBA Excel

Instrucțiunea VBA On Error este un tip de mecanism de gestionare a erorilor care este utilizat pentru a ghida codul să facă ce se întâmplă dacă întâmpină orice tip de eroare, în general când un cod întâlnește o eroare, executarea se oprește, dar cu această instrucțiune în cod, executarea codul continuă așa cum are un set de instrucțiuni de făcut atunci când întâmpină o eroare.

Anticiparea erorii în cod vă face un profesionist în codificarea VBA. Nu puteți face codul 100% eficient. Chiar dacă aveți încredere în codul dvs. într-un fel sau altul, este posibil să apară o eroare.

Este aproape o sarcină imposibilă identificarea și gestionarea oricărui tip de eroare, dar avem diferite moduri de a gestiona o eroare în VBA. În timp ce scrieți codul, este posibil să nu anticipați tipul de cod de eroare care poate apărea, dar dacă apare o eroare, veți petrece mai mult timp depanând decât scrierea codului în sine.

Ce este o eroare?

O eroare nu este altceva decât o linie de cod nu poate fi executată din cauza funcționalității sau a codului greșit. Deci, încercați să anticipați eroarea și să o gestionați.

De exemplu, dacă încercați să ștergeți foaia care nu este acolo, atunci evident că nu putem executa acea linie de cod.

O eroare este de trei tipuri; o eroare este compilată datorită variabilelor nedeclarate. Al doilea este o eroare de introducere a datelor datorată intrărilor greșite de către coder, iar a treia este o eroare de timp de rulare datorită faptului că VBA nu poate recunoaște linia de cod. Pentru a încerca să accesați sau să lucrați la o foaie de lucru sau un registru de lucru, care nu există.

Dar avem o declarație în VBA pentru a gestiona toate aceste tipuri de erori, adică declarația „On Error”.

Tipuri de declarații de eroare

Punctul cheie al gestionării erorilor în VBA este declarația „On Error”. De exemplu, La eroare, „reluați următoarea linie”, „mergeți la sau treceți la o altă linie” etc. etc.

Declarația On Error are trei tipuri de declarații.

  1. GoTo 0 înseamnă ori de câte ori apare eroarea de execuție, excel sau VBA ar trebui să afișeze caseta de mesaj de eroare spunând tipul de eroare pe care l-a întâmpinat. De îndată ce VBA execută codul, acesta dezactivează toate gestionarele de erori din acel bloc special din cod.
  2. Reluare Următor înseamnă ori de câte ori apare eroarea, această instrucțiune instruiește excelul să ignore acea eroare și să treacă la (reluați următoarea) următoarea linie de cod fără a afișa niciun mesaj de eroare. Nu înseamnă că va remedia eroarea; mai degrabă, doar ignoră eroarea.
  3. GoTo (etichetă) înseamnă ori de câte ori VBA întâmpină o eroare, mergeți la eticheta atribuită. Acest lucru face ca codul să treacă la linia specifică furnizată de coder.

Top 3 moduri de gestionare a erorilor în VBA

# 1 - La eroare Reluați în continuare

Să presupunem că împărțiți valoarea 20 la 0 și ați declarat variabila pentru a-i atribui rezultatul împărțirii.

Cod:

Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub

Dacă rulați acest cod, acesta va arunca eroarea de mai jos.

Deci nu puteți împărți niciun număr la valoarea zero. Numărul de eroare al timpului de rulare este 11, adică Diviziune la zero.

Acum voi adăuga încă o linie la cod.

Cod:

Sub OnError_Example1 () Dim i Integer, j As Integer i = 20/0 j = 20/2 End Sub

Acum voi adăuga declarația On error reluați în partea de sus.

Cod:

Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Reîncepe Următorul i = 20/0 j = 20/2 End Sub

Acum, dacă execut acest cod, nu îmi va da niciun mesaj de eroare; mai degrabă, va executa următoarea linie de cod, adică j = 20/2.

# 2 - La eticheta GoTo de eroare

Am declarat trei variabile.

Cod:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer

Pentru toate aceste trei variabile, voi atribui un calcul al diviziunii.

Cod:

Sub OnError_Example1 () Dim i Ca întreg, j Ca întreg, k Ca întreg I = 20/0 j = 20/2 k = 10/5

Rezultatul tuturor acestor trei calcule va fi afișat în caseta de mesaj.

Cod:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "Valoarea lui i este" & i & vbNewLine & "Valoarea lui j este "& j & _ vbNewLine &" Valoarea lui k este "& k & vbNewLine End Sub

Acum voi încerca să execut acest cod, deoarece calculul „eu” nu este corect. Vom primi eroarea de timp de rulare 11.

Acum voi adăuga declarația „On Error Resume Next”.

Cod:

Sub OnError_Example1() Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20 / 0 j = 20 / 2 k = 10 / 5 MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _ vbNewLine & "The value of k is " & k & vbNewLine End Sub

If I execute this, it will skip the “I” calculation and execute the remaining two calculations, and the result is as follows.

Now instead of “On Error Resume Next,” I will add “On Error GoTo KCalculation.”

Code:

Sub OnError_Example1() Dim i As Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20 / 0 j = 20 / 2 KCalculation: k = 10 / 5 MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _ vbNewLine & "The value of k is " & k & vbNewLine End Sub
Notă: Aici, „KCalculation” este numele etichetei pe care am dat-o; puteți da propriul nume de etichetă fără spațiu.

Acum, dacă execut această linie de cod, aceasta nu va trece la următoarea linie. Mai degrabă va trece la numele etichetei pe care l-am introdus, adică „KCalcualtion”. Aici va ignora eroarea dată de „I” și, de asemenea, nu va executa calculul „j”, dar imediat, va trece la „KCalcualtion”.

# 3 - Imprimați numărul de eroare în VBA

La sfârșitul codului, putem imprima, de asemenea, numărul erorii într-o casetă de mesaj separată. Următoarea linie de cod va face această treabă.

Cod:

Err.Number

Acum voi rula acest cod prima casetă de mesaj va arăta rezultatele calculului.

Faceți clic pe OK. Se va afișa încă o casetă de mesaj pentru a afișa numărul de eroare.

Mergem 11; ca rezultat, adică, divizare după zero.

De asemenea, putem obține descrierea erorii în locul numărului. Trebuie doar să schimbăm codul. Mai jos este codul.

Cod:

Err.Descriere

Se va afișa o descriere ca aceasta.

Lucruri de amintit

  • După ce introduceți „On Error Resume Next” la sfârșitul codului, nu uitați să adăugați declarația „On Error GoTo 0.”
  • Numele etichetei trebuie să fie același în ambele locuri.
  • Numele etichetelor nu trebuie definite cu mult timp în avans.
  • În cele din urmă, vedeți întotdeauna care a fost eroarea apărută prin caseta de mesaje separată.

Articole interesante...