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 chybu zvládli, musíme začať s vyhlásením „On Error Resume Next“ a ukončiť túto obslužnú rutinu chýb. Musíme použiť vyhlásenie „Pri chybe 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?

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“. Po spustení kódu sa vyskytne chyba, ako je uvedené nižšie.

Pretože neexistuje žiadny hárok s názvom „List1“, došlo k chybe „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 list s názvom „List2“.

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

V tomto príklade stačí ignorovať chybu prvého hárka, ale druhého hárka ďalej. Potrebujeme, aby sa chyba vyskytla, ak nie je k dispozícii list „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, ak stlačíte kláves F8, keď vykonanie kódu skočí na ďalší riadok, bude vykonaná úloha aktívneho riadku. Teraz je aktívny riadok (žlto sfarbený riadok) obslužnou rutinou chýb „Pri chybe pokračovať ďalej“ a obslužná rutina chýb bude povolená.

Teraz sa vyskytne akákoľvek chyba. Bude sa ignorovať, kým nespustí obslužnú rutinu chyby, ktorá 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.

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.

V predchádzajúcom prípade bez On Error GoTo 0 ignorovala aj túto chybu, ale keďže sme pridali deaktivátor obslužnej rutiny chýb, začala sa chyba zobrazovať znova.

Na čo je potrebné pamätať tu

  • Pri chybe Pokračovať v chybe ďalej a Pri chybe GoTo 0 je potrebné použiť ako „ Povolenie obsluhy chýb “ a „ Zakázanie obsluhy chýb “.
  • Akýkoľvek riadok kódov medzi týmito dvoma príkazmi narazí na chybu, ktorá bude ignorovaná.
  • Ak existuje príkaz On Error GoTo 0, potom po ukončení procedúry chyby podprocesu bude deaktivovaný.

Zaujímavé články...