VBA o pogrešci Idi na 0 | Kako koristiti na pogrešci GoTo 0 u programu Excel VBA?

Excel VBA o pogrešci Idi na 0

VBA On Error GoTo 0 je izjava obrađivača pogrešaka koja se koristi za onemogućavanje omogućenog obrađivača pogrešaka u postupku. Označava se kao "Onemogućivač rukovatelja pogreškama".

Rukovanje pogreškama u bilo kojem od programskih jezika glavna je klasa koju svi koderi moraju razumjeti. VBA programski jezik, a također imamo tehnike za rješavanje pogrešaka u ovom programskom jeziku. "On Error Resume Next" omogućuje obrađivač pogrešaka, a "On Error GoTo 0" onemogućit će omogućeni obrađivač pogrešaka.

I "On Error Resume Next" i "On Error GoTo 0" su parovi koji se trebaju koristiti zajedno za efikasnost koda. Da bismo riješili pogrešku, moramo započeti s izjavom “On Error Resume Next”, a da bismo prekinuli ovaj rukovatelj pogreškama trebamo koristiti izjavu “On Error GoTo 0”.

Bilo koji linijski kôd napisan između ovih izjava ignorirat će bilo koju vrstu pogreške koja se dogodila u postupku.

Kako koristiti Izjavu o pogrešci GoTo 0?

Ovdje možete preuzeti ovaj VBA o pogrešci Idi na 0 Excel predložak - VBA o pogrešci Idi na 0 Excel predložak

Za primjer pogledajte donji kod.

Kodirati:

 Sub On_ErrorExample1 () Radni listovi ("List1"). Odaberite raspon ("A1"). Vrijednost = 100 radnih listova ("Sheet2"). Odaberite raspon ("A1"). Vrijednost = 100 Kraj Sub 

Ono što čini gornji kod je da će prvo odabrati radni list s nazivom "Sheet1", a u ćeliju A1 umetnut će vrijednost 100.

Kodirati:

Radni listovi ("Sheet1"). Odaberite raspon ("A1"). Vrijednost = 100

Tada će odabrati radni list s nazivom "Sheet2" i umetnuti istu vrijednost.

Kodirati:

Radni listovi ("Sheet2"). Odaberite raspon ("A1"). Vrijednost = 100

Sada u radnoj knjižici imam donje listove.

Ne postoje listovi pod nazivom „Sheet1“ i „Sheet2“, kada pokrenemo kod naići će na pogrešku poput dolje navedene.

Budući da ne postoji list s nazivom "Sheet1", naišao je na pogrešku "Subscript out of range". Da bih riješio ovu pogrešku, na vrh makronaredbe ću dodati izjavu rukovatelja pogreškama “Na sljedećem nastavku greške”.

Kodirati:

 Sub On_ErrorExample1 () Na grešci Nastavi sljedeće radne listove ("List1"). Odaberite raspon ("A1"). Vrijednost = 100 radnih listova ("Sheet2"). Odaberite raspon ("A1"). Vrijednost = 100 Kraj Sub 

Sada pokrenite kod i pogledajte što će se dogoditi.

Neće dati poruke o pogrešci jer je omogućena izjava rukovatelja pogreškama Na greška Nastavi dalje .

Zamislite scenarij u kojem trebamo zanemariti pogrešku u slučaju nedostupnosti radnog lista "Sheet1", ali moramo obavijestiti ako ne postoji radni list pod nazivom "Sheet2".

Budući da smo na vrh dodali On Error Resume Next , počelo je obrađivati ​​pogrešku, ali istovremeno moramo odrediti koliko redaka trebamo ignorirati ovu pogrešku.

U ovom primjeru samo trebamo zanemariti pogrešku za prvi radni list, ali za drugi list nadalje trebamo da se pogreška dogodi ako ne postoji radni list „Sheet2”. Dakle, nakon prvog koda radnog lista dodaje se redak za onemogućavanje pogreške On Error GoTo 0.

Kodirati:

 Sub On_ErrorExample1 () Na grešci Nastavi sljedeće radne listove ("Sheet1"). Odaberite raspon ("A1"). Vrijednost = 100 Na pogrešci Idite na 0 radnih listova ("Sheet2"). Odaberite raspon ("A1"). Value = 100 End Sub 

Sada pokrenite kôd redak po redak da biste vidjeli utjecaj pritiskom na tipku F8.

Sada, ako jednom pritisnete tipku F8, izvršavanje koda skočit će na sljedeći redak i izvršit će se zadatak aktivnog retka. Sada je aktivna linija (žuto obojena linija) "On Error Resume Next" (Ručno nastavljeno s pogreškom), a rukovatelj pogreškama će biti omogućen.

Now any error occurs it will be ignored until it executes the error handler disables code “On Error GoTo 0” statement.

In the previous attempt, we have encountered errors but press the F8 key one more time and see the magic.

Without giving any kind of error it has resumed execution of the code even though there is not worksheet “Sheet2” to select. Now press F8 again.

Since there was no Sheet1 it cannot insert the value in the A1 cell as 500 but what it does is it will insert the value of 500 to cell A1 whichever worksheet is active. My active sheet when I am executing the code was “Sheet3”, so the value of 100 is inserted to the cell A1.

Now the active line of code is “On Error GoTo 0”, by pressing the F8 key this line task will be executed.

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.