VBA při chybě Přejít na 0 | Jak používat při chybě GoTo 0 v aplikaci Excel VBA?

Excel VBA při chybě Přejít na 0

VBA On Error GoTo 0 je příkaz obslužné rutiny chyb používaný k deaktivaci povolené obslužné rutiny chyb v proceduře. Označuje se jako „Chyba obslužné rutiny chyb“.

Zpracování chyb v kterémkoli z programovacích jazyků je hlavní třída, které musí všichni programátoři rozumět. Programovací jazyk VBA také a v tomto programovacím jazyce máme také techniky zpracování chyb. „On Error Resume Next“ povoluje obslužnou rutinu chyb a „On Error GoTo 0“ deaktivuje povolenou obslužnou rutinu chyb.

„On Error Resume Next“ i „On Error GoTo 0“ jsou páry, které je třeba použít společně pro efektivitu kódu. Abychom mohli zpracovat chybu, musíme začít příkazem „On Error Resume Next“ a pro ukončení této obslužné rutiny chyb musíme použít příkaz „On Error GoTo 0“.

Jakýkoli řádkový kód napsaný mezi těmito prohlášeními bude ignorovat jakoukoli chybu, ke které došlo v řízení.

Jak používat prohlášení o chybě GoTo 0?

Tuto šablonu aplikace VBA On Error Goto 0 Excel si můžete stáhnout zde - VBA On Error Goto 0 Excel Template

Například se podívejte na níže uvedený kód.

Kód:

 Sub On_ErrorExample1 () Worksheets ("Sheet1"). Select Range ("A1"). Value = 100 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

Výše uvedený kód dělá to, že nejprve vybere list s názvem „List1“ a do buňky A1 vloží hodnotu 100.

Kód:

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

Poté vybere list s názvem „List2“ a vloží stejnou hodnotu.

Kód:

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

Nyní mám v sešitu níže uvedené listy.

Neexistují žádné listy s názvem „List1“ a „List2“, při spuštění kódu dojde k chybě jako níže.

Protože neexistuje žádný list s názvem „List1“, došlo k chybě „Dolní index mimo rozsah“. Ke zpracování této chyby přidám v horní části makra prohlášení obslužné rutiny chyb „On Error Resume Next“.

Kód:

 Sub On_ErrorExample1 () Při chybě Obnovit další listy ("List1"). Vyberte rozsah ("A1"). Hodnota = 100 listů ("List2"). Vyberte rozsah ("A1"). Hodnota = 100 Konec Sub 

Nyní spusťte kód a uvidíte, co se stane.

Neposkytne žádné chybové zprávy, protože je povoleno prohlášení obslužné rutiny chyb při obnovení životopisu další .

Představte si scénář, kdy musíme ignorovat chybu v případě nedostupnosti listu „List1“, ale musíme upozornit, pokud neexistuje list s názvem „List2“.

Protože jsme nahoře přidali On Error Resume Next , začalo to chybu zpracovávat, ale zároveň musíme specifikovat, kolik řádků musíme tuto chybu ignorovat.

V tomto příkladu stačí ignorovat chybu pro první list, ale pro druhý list dále musíme, aby k chybě došlo, pokud neexistuje list „List2“. Takže po prvním kódu listu přidá řádek zakázání chyb On Error GoTo 0.

Kód:

 Sub On_ErrorExample1 () Při chybě Obnovit další pracovní listy ("List1"). Vyberte rozsah ("A1"). Hodnota = 100 Při chybě GoTo 0 pracovních listů ("List2"). Vyberte rozsah ("A1"). Hodnota = 100 Konec Sub 

Nyní spusťte kód po řádku, abyste viděli dopad stisknutím klávesy F8.

Nyní, když jednou stisknete klávesu F8, spuštění kódu přeskočí na další řádek a bude spuštěn úkol aktivní linky. Nyní je aktivní řádek (žlutě zbarvený řádek) obslužnou rutinou chyby „Při chybě Pokračovat dále“ a obslužná rutina chyby bude povolena.

Nyní dojde k jakékoli chybě, bude ignorována, dokud neprovede obslužnou rutinu chyby, která zakáže příkaz „ On Error GoTo 0 “.

V předchozím pokusu jsme narazili na chyby, ale stiskněte ještě jednou klávesu F8 a podívejte se na kouzlo.

Bez udání jakéhokoli druhu chyby obnovilo provádění kódu, přestože není k dispozici list „List2“. Nyní stiskněte znovu klávesu F8.

Protože nebyl žádný List1, nemůže vložit hodnotu do buňky A1 jako 500, ale to, co dělá, vloží hodnotu 500 do buňky A1 podle toho, který list je aktivní. Můj aktivní list, když provádím kód, byl „List3“, takže do buňky A1 je vložena hodnota 100.

Nyní je aktivní řádek kódu „ On Error GoTo 0 “, stisknutím klávesy F8 bude tento řádek proveden.

Vzhledem k tomu, že je spuštěno „On Error GoTo 0“, zastavilo se proces zpracování chyb a znovu se začnou zobrazovat chyby, pokud se vyskytnou. Stiskněte klávesu F8 a podívejte se na chybu.

V předchozím případě bez On Error GoTo 0 ignoroval také tuto chybu, ale protože jsme přidali disler obslužné rutiny chyb, začala znovu zobrazovat chybu.

Na co si pamatovat zde

  • Jak při pokračování v chybě, tak při chybě GoTo 0 je třeba použít jako „ Zpracování chybové rutiny “ a „ Zakázání obslužné rutiny chyb “.
  • Jakýkoli řádek kódu mezi těmito dvěma příkazy narazí na chybu, která bude ignorována.
  • Pokud existuje příkaz On Error GoTo 0, bude po ukončení podprogramu obslužná rutina chyby deaktivována.

$config[zx-auto] not found$config[zx-overlay] not found