VBA pri chybe Prejsť na 0 | Ako používať chybu GoTo 0 v programe Excel VBA?

Excel VBA pri chybe Prejsť na 0

VBA On Error GoTo 0 je vyhlásenie obsluhy chyby, ktoré sa používa na zakázanie povoleného obslužného programu chýb v procedúre. Nazýva sa to „zakázanie obsluhy chýb“.

Spracovanie chýb v ktoromkoľvek z programovacích jazykov je hlavná trieda, ktorej musia všetci kódéri rozumieť. Programovací jazyk VBA tiež a v tomto programovacom jazyku máme aj techniky spracovania chýb. „On Error Resume Next“ aktivuje obslužnú rutinu chýb a „On Error GoTo 0“ deaktivuje povolenú obslužnú rutinu chýb.

„On Error Resume Next“ aj „On Error GoTo 0“ sú páry, ktoré je potrebné použiť v tandeme kvôli efektívnosti kódu. Aby sme zvládli chybu, musíme začať príkazom „On Error Resume Next“ a na ukončenie tejto obsluhy chýb musíme použiť príkaz „On Error GoTo 0“.

Akýkoľvek riadkový kód napísaný medzi týmito vyhláseniami bude ignorovať akýkoľvek druh chyby, ktorá sa vyskytla v konaní.

Ako používať vyhlásenie o chybe GoTo 0?

Túto šablónu VBA On Error Goto 0 Excel si môžete stiahnuť tu - VBA On Error Goto 0 Excel Template

Napríklad si pozrite nasledujúci kód.

Kód:

 Sub Pracovné listy On_ErrorExample1 () ("List1"). Vyberte rozsah ("A1"). Hodnota = 100 pracovných listov ("List2"). Vyberte rozsah ("A1"). Hodnota = 100 Koniec Sub 

Vyššie uvedený kód robí to, že najskôr vyberie pracovný hárok s názvom „List1“ a do bunky A1 vloží hodnotu 100.

Kód:

Pracovné listy ("List1"). Vyberte rozsah ("A1"). Hodnota = 100

Potom vyberie pracovný hárok s názvom „List2“ a vloží rovnakú hodnotu.

Kód:

Pracovné listy ("List2"). Vyberte rozsah ("A1"). Hodnota = 100

Teraz mám v zošite nižšie uvedené listy.

Neexistujú žiadne listy s názvom „List1“ a „List2“, pri spustení kódu sa vyskytne chyba, ako je uvedená nižšie.

Pretože neexistuje žiadny hárok s názvom „List1“, vyskytla sa chyba „Dolný index mimo rozsahu“. Aby som túto chybu zvládol, do hornej časti makra pridám vyhlásenie o chybe „On Error Resume Next“.

Kód:

 Sub On_ErrorExample1 () Pri chybe Obnoviť ďalšie pracovné hárky („List1“). Vyberte rozsah („A1“). Hodnota = 100 pracovných hárkov („List2“). Vyberte rozsah („A1“). Hodnota = 100 Koniec Sub 

Teraz spustite kód a uvidíte, čo sa stane.

Nebude dávať žiadne chybové správy, pretože je povolené vyhlásenie o chybe pri chybe Obnoviť ďalšie .

Predstavte si scenár, v ktorom musíme ignorovať chybu v prípade nedostupnosti listu „List1“, ale musíme upozorniť, ak neexistuje pracovný list s názvom „List2“.

Pretože sme hore pridali On Error Resume Next , začalo to chybu spracovávať, ale zároveň musíme určiť, koľko riadkov musíme túto chybu ignorovať.

V tomto príklade stačí ignorovať chybu pre prvý pracovný hárok, ale pre druhý hárok ďalej sa musí chyba vyskytnúť, ak neexistuje pracovný hárok „List2“. Takže po prvom kóde kódu pracovného hárka sa pridá riadok zakázania chyby On Error GoTo 0.

Kód:

 Sub On_ErrorExample1 () Pri chybe Obnoviť ďalšie pracovné hárky ("List1"). Vyberte rozsah ("A1"). Hodnota = 100 Pri chybe GoTo 0 pracovných listov ("List2"). Vyberte rozsah ("A1"). Hodnota = 100 Koniec pod. 

Teraz spustite kód po riadku, aby ste videli vplyv stlačením klávesu F8.

Teraz, keď stlačíte kláves F8, prevedenie kódu skočí na ďalší riadok a bude vykonaná aktívna úloha. Teraz je aktívny riadok (žlto sfarbený riadok) obslužným programom chýb „On Error Resume Next“ a obslužný program chýb bude povolený.

Teraz, keď sa vyskytne akákoľvek chyba, bude sa ignorovať, kým nespustí obslužnú rutinu chyby, čím deaktivuje príkaz „ On Error GoTo 0 “.

V predchádzajúcom pokuse sme narazili na chyby, ale stlačte kláves F8 ešte raz a uvidíte kúzlo.

Bez uvedenia akejkoľvek chyby obnovil vykonávanie kódu, aj keď na výber nie je pracovný hárok „List2“. Teraz stlačte kláves F8 znova.

Pretože neexistoval žiadny list1, nemôže vložiť hodnotu do bunky A1 ako 500, ale čo urobí, vloží hodnotu 500 do bunky A1 podľa toho, ktorý list je aktívny. Môj aktívny hárok, keď som vykonával kód, bol „Sheet3“, takže do bunky A1 sa vloží hodnota 100.

Teraz je aktívny riadok kódu „ On Error GoTo 0 “, stlačením klávesu F8 sa vykoná tento riadok.

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.