VBA při chybě GoTo - Typy chybových prohlášení ve VBA

Excel VBA při chybě GoTo

Chyby jsou nedílnou součástí každého kódovacího jazyka a makra VBA se od toho nijak neliší. Podle mého názoru je zjištění, proč k chybě došlo, 90% odvedené práce a 10% spočívá v tom, jak tuto chybu opravit. V každém kódovacím jazyce používají kodéry svůj vlastní způsob zpracování chyb ve svém kódování, takže i my používáme kódování VBA. Často musíme chybu ignorovat, nebo často můžeme chtít jít na konkrétní věci, když dojde k chybě. „Při chybě“ je prohlášení, které musíme použít ve VBA ke zpracování chyb.

Toto prohlášení má tři typy příkazů a níže je uveden seznam.

  1. Při chybě Přejít na 0
  2. Přejít na chybu (štítek)
  3. Při chybě Pokračovat dále

V tomto článku uvidíme, jak se tyto tři příkazy používají v kódování VBA ke zpracování jakéhokoli druhu chyb.

Jak používat VBA při chybových hlášeních?

# 1 - Při chybě Pokračovat dále

Jak říká samotné prohlášení, „On Error Resume Next“ znamená, kdykoli dojde k chybě v kódu, „pokračovat“ v dalším řádku kódu ignorováním kódu chybového řádku. Nyní se podívejte na níže uvedený kód.

V níže uvedeném kódu jsem uvedl názvy listů a požádal jsem o zadání hodnoty v první buňce jako „Testování chyb“.

Kód:

Sub On_Error_Resume_Next () Worksheets ("Ws 1"). Select Range ("A1"). Value = "Error Testing" Worksheets ("Ws 2"). Select Range ("A1"). Value = "Error Testing" Worksheets ( "Ws 3"). Vyberte rozsah ("A1"). Hodnota = "Testování chyb" Pracovní listy ("Ws 4"). Vyberte rozsah ("A1"). Hodnota = "Testování chyb" Konec Sub

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

  • Spustím kód a uvidím, co se stane.
  • Dostali jsme chybu „Dolní index mimo rozsah“, kliknutím na „Debug“ zobrazíte, ve kterém řádku se chyba vyskytla.
  • Takže v řádku „Pracovní listy („ Ws 3 “). Vyberte„ jsme dostali chybu. Důvodem je, že v našem sešitu neexistuje žádný list s názvem „Ws 3“, takže došlo k chybě.

V takových případech můžeme chtít ignorovat chybu a pokračovat v provádění kódu na další řádek. To je místo, kde se na obrázku objeví náš obslužný program chyb „Při chybě Obnovit další“.

  • Jediné, co musíme udělat, je přidat na začátek makra řádek „On Error Resume Next“.

Nyní proveďte tento kód a nezobrazí se žádná chybová zpráva, protože vždy, když kód narazí na chybu, bude chybu ignorovat a pokračovat na další řádek kódu.

# 2 - Při chybě GoTo 0

Toto není obslužná rutina chyb, spíše aktivátor chybových zpráv poté, co jsme deaktivovali chybovou zprávu pomocí příkazu „Při chybě Pokračovat dále“.

Jeden, který použijete příkaz „Obnovit další“, makra VBA začnou ignorovat jakýkoli druh chyby, ke které dojde, a pokračují v dalším řádku kódů. Ale nechceme, aby se to stalo po celou dobu, protože některé chyby musíme úmyslně ignorovat, jiné potřebujeme oznámení.

Pokud nějaká konkrétní sada kódu vyvolá chybu v tomto bloku kódu, pouze musíme ignorovat chyby v jiných částech kódu. Nechceme ignorovat chybu.

  • Podívejte se na obrázek níže, kde je použito prohlášení „Při chybě GoTo 0“.

Takže nyní budou chyby ignorovány, dokud kód nenajde aktivátora upozornění na chybu „On Error GoTo 0“, jakmile tento řádek kódu provede makra zpět do normálu a začne házet chybové zprávy jako obvykle.

# 3 - Při chybě GoTo Label

Viděli jsme, jak ignorovat chybu a jak povolit zpět upozornění na chybu. Nyní pomocí této metody můžeme přejít na konkrétní řádek kódu.

V této metodě „Štítek“ znamená, že tomuto štítku můžeme dát libovolný název a stejný štítek by měl být uveden také na požadovaném řádku kódu.

Podívejte se například na stejný kód z výše uvedeného příkladu.

Nyní provedeme kódový řádek po řádku stisknutím funkční klávesy F8.

Nyní makro přečte prohlášení obslužné rutiny chyb; stiskněte klávesu F8 a proveďte první kód 2 listu.

Nyní se makro chystá spustit třetí kód listu, který v sešitu není, stiskněte klávesu F8 a uvidíte, co se stane.

Protože makro narazilo na chybu v níže uvedeném řádku kódu, přeskočilo na štítek obslužné rutiny chyb „ErrorMessage“, který byl popsán pomocí příkazu „On Error GoTo (Label)“.

Nyní se v okně se zprávou zobrazí zpráva „Došlo k chybě a ukončení makra“.

Věci k zapamatování

  • Vba On Error GoTo 0 znovu povolí oznámení o chybě, takže jej nezapomeňte přidat po zadání obslužné rutiny chyby.
  • Musíte si být naprosto jisti, ve které části kódu chcete chybu ignorovat, proto přiložte obslužnou rutinu chyb pouze pro tento blok kódu.

Zajímavé články...