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ě dochází, 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ři chybě Přejít [š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?

Tuto šablonu prohlášení o chybě VBA GoTo si můžete stáhnout zde - Šablona prohlášení VBA o chybě GoTo

# 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, „resume“ další řádek 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 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é pracovní 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 „Listy („ Ws 3 “). Vyberte„ jsme dostali chybu, protože v našem sešitu není žá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 do obrázku dostane náš obslužný program chyby „Při chybě Pokračovat v dalším“.

  • 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 nebude se zobrazovat žádná chybová zpráva, protože kdykoli dojde k chybě, bude chybu ignorovat a bude pokračovat na další řádek kódu.

# 2 - Při chybě GoTo 0

Toto není popisovač chyb, ale 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ému dojde, a pokračuje 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 pouze v tomto bloku kódu, musíme ignorovat chyby ostatních částí kódu, které nechceme ignorovat.

  • Podívejte se na obrázek níže, kde je uvedeno použití příkazu „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 jakýkoli 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, stisknutím klávesy F8 provedete první 2 kód 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ého programu 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.