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 și „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 pentru a termina 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?

Puteți descărca acest șablon Excel VBA On Error Goto 0 Excel - Șablon VBA On Error Goto 0 Excel

Pentru un exemplu, consultați 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ă „Sheet1” și î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:

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

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

Nu există foi numite „Sheet1” și „Sheet2”, atunci 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 eroarea „Abonament în afara intervalului”. 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”.

Deoarece 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 în continuare trebuie 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 va trece la următoarea linie și va fi executată sarcina de linie activă. Acum linia activă (linia de culoare galbenă) este „On Error Resume Next” (Gestionare erori următoare) și gestionarea erorilor va fi activată.

Acum apare orice eroare, va fi ignorată până când va executa 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 introduce valoarea în celula A1 ca 500, dar ceea ce face este să introducă 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 ”, prin apăsarea tastei F8 această sarcină de linie va fi executată.

Since “On Error GoTo 0” is executed it has stopped the process of error handling and again starts to show errors if any occurs. Press the F8 key and see the error.

In the previous case without On Error GoTo 0, it has ignored this error as well, but since we have added error handler disabler it has started to show the error again.

Things to Remember here

  • Both On Error Resume Next and On Error GoTo 0 needs to be used as “Error Handler Enabler” and “Error Handler Disabler”.
  • Any line of codes between these two statements encounters an error it will be ignored.
  • If there is On Error GoTo 0 statement then after the exit of the subprocedure error handler will be disabled.