VBA On Error Goto 0 - Cum se folosește eroarea GoTo 0 în Excel VBA?

Excel VBA la eroare Goto 0

VBA On Error GoTo 0 este o instrucțiune de gestionare a erorilor utilizată pentru a dezactiva gestionarea erorilor activată în procedură. Este denumit „Disabler pentru gestionarea erorilor”.

Tratarea erorilor în oricare dintre limbajele de programare este o clasă master pe care trebuie să o înțeleagă toți programatorii. De asemenea, limbajul de programare VBA și avem, de asemenea, tehnici de gestionare a erorilor în acest limbaj de programare. „On Error Resume Next” activează gestionarea erorilor, iar „On Error GoTo 0” va dezactiva gestionarea erorilor activată.

Atât „On Error Resume Next”, cât și „On Error GoTo 0” sunt perechi care trebuie utilizate în tandem pentru eficiența codului. Pentru a rezolva eroarea, trebuie să începem cu declarația „On Error Resume Next” și să terminăm acest handler de eroare. Trebuie să folosim declarația „On Error GoTo 0”.

Orice cod de linie scris între aceste declarații va ignora orice fel de eroare care a avut loc în cadrul procedurilor.

Cum se folosește declarația On Error GoTo 0?

De exemplu, uitați-vă la codul de mai jos.

Cod:

Sub On_ErrorExample1 () Foi de lucru ("Sheet1"). Selectați Range ("A1"). Valoare = 100 foi de lucru ("Sheet2"). Selectați Range ("A1"). Value = 100 End Sub

Ceea ce face codul de mai sus este că va selecta mai întâi foaia de lucru numită „Foaie1”, iar în celula A1 va introduce valoarea 100.

Cod:

Foi de lucru („Sheet1”). Selectați Range („A1”). Valoare = 100

Apoi va selecta foaia de lucru numită „Sheet2” și va introduce aceeași valoare.

Cod:

Fișe de lucru („Sheet2”). Selectați Range („A1”). Valoare = 100

Acum am foile de mai jos în registrul meu de lucru.

Nu există foi numite „Sheet1” și „Sheet2”. Când rulăm codul, acesta va întâlni o eroare ca cea de mai jos.

Deoarece nu există nicio foaie denumită „Foaie1”, a întâmpinat o eroare „Subscript out of range”. Pentru a rezolva această eroare, voi adăuga o declarație de gestionare a erorilor „On Error Resume Next” în partea de sus a macro-ului.

Cod:

Sub On_ErrorExample1 () On Error Reîncepeți următoarele foi de lucru ("Sheet1"). Selectați Range ("A1"). Valoare = 100 foi de lucru ("Sheet2"). Selectați Range ("A1"). Value = 100 End Sub

Acum rulați codul și vedeți ce se întâmplă.

Nu va afișa niciun mesaj de eroare deoarece declarația de gestionare a erorilor On Error Resume Next este activată.

Imaginați-vă scenariul în care trebuie să ignorăm eroarea în caz de indisponibilitate a foii de lucru „Foaie1”, dar trebuie să anunțăm dacă nu există o foaie de lucru numită „Foaie2”.

Din moment ce am adăugat On Error Resume Next în partea de sus, a început să gestioneze eroarea, dar în același timp, trebuie să specificăm câte linii trebuie să ignorăm această eroare.

În acest exemplu, trebuie doar să ignorăm eroarea pentru prima foaie de lucru, dar pentru a doua foaie. Avem nevoie să apară eroarea dacă nu există o foaie de lucru „Sheet2”. Deci, după prima foaie de lucru, codul adaugă linia de dezactivare a erorii On Error GoTo 0.

Cod:

Sub On_ErrorExample1 () On Error Reîncepeți următoarele foi de lucru ("Sheet1"). Selectați Range ("A1"). Value = 100 On Error GoTo 0 Worksheets ("Sheet2"). Selectați Range ("A1"). Value = 100 End Sub

Acum rulați codul rând cu rând pentru a vedea impactul apăsând tasta F8.

Acum, dacă apăsați tasta F8 odată ce executarea codului sare la următoarea linie, iar sarcina liniei active va fi executată. Acum, linia activă (linia de culoare galbenă) este gestionarea erorilor „On Error Resume Next”, iar gestionarea erorilor va fi activată.

Acum apare orice eroare. Acesta va fi ignorat până când execută gestionarul de erori dezactivează instrucțiunea de cod „ On Error GoTo 0 ”.

În încercarea anterioară, am întâlnit erori, dar apăsați încă o dată tasta F8 și vedeți magia.

Fără a oferi niciun fel de eroare, a reluat executarea codului, chiar dacă nu există o foaie de lucru „Sheet2” de selectat. Acum apăsați din nou pe F8.

Deoarece nu a existat Sheet1, nu poate insera valoarea în celula A1 ca 500, dar ceea ce face este că va introduce valoarea 500 în celula A1, oricare dintre foile de lucru active. Foaia mea activă când execut codul a fost „Sheet3”, deci valoarea 100 este inserată în celula A1.

Acum linia de cod activă este „ On Error GoTo 0 ” apăsând tasta F8. Această sarcină de linie va fi executată.

Deoarece „On Error GoTo 0” este executat, acesta a oprit procesul de gestionare a erorilor și începe din nou să afișeze erori dacă apare vreuna. Apăsați tasta F8 și vedeți eroarea.

În cazul anterior, fără On Error GoTo 0, a ignorat și această eroare, dar, din moment ce am adăugat un dezactivator de gestionare a erorilor, a început să afișeze din nou eroarea.

Lucruri de reținut aici

  • Atât On Error Resume Next, cât și On Error GoTo 0 trebuie utilizate ca „ Error Handler Enabler ” și „ Error Handler Disabler ”.
  • Orice linie de coduri între aceste două instrucțiuni întâmpină o eroare care va fi ignorată.
  • Dacă există instrucțiunea On Error GoTo 0, atunci după ieșirea din handlerul de erori subprocedură va fi dezactivat.

Articole interesante...