Zpracování chyb Excel VBA

Zpracování chyb je velmi užitečný a významný mechanismus pro programování jazyků, jako je VBA. Řízení chyb nebo prevence je aspekt manipulace s chybami, což znamená přijmout účinná a významná opatření uvnitř skriptu VBA, aby se zabránilo výskytu chybové zprávy.

Různé typy chyb ve VBA

  1. Chyba syntaxe nebo chyba analýzy
  2. Chyba kompilace nebo kompilace
  3. Chyba za běhu
  4. Logická chyba

Výše uvedené chyby mohou být odstraněny pomocí níže uvedených debugů a různých prohlášení „On Error“ vložených mezi kód.

On Error Resume Next

On Error Goto 0

Při chybě Goto

Při chybě Goto -1

Zpracování chyb VBA pomocí různých příkazů „ON ERROR“

Tuto šablonu VBA Error Handling Excel si můžete stáhnout zde - VBA Error Handling Excel Template

Příklad # 1 - Chyby kompilace VBA

Pokud dojde k chybě v příkazu nebo syntaxi kódu VBA, pokud omylem omylem zadáte kód, bude zvýrazněn červenou barvou v závislosti na možnostech nastavení v nástrojích (Pokud jste vybrali automatickou kontrolu syntaxe).

Při spuštění kódu s nesprávnou syntaxí se zobrazí vyskakovací okno s chybou kompilace.

Kód:

 Sub SYNTAX_ERROR () MsgBox toto je můj první program End Sub 

„COMPILE ERROR: VARIABLE NOT DEFINED“ je nejčastější chyba, která se objeví jako vyskakovací zpráva. Pokud není definována referenční proměnná, dojde k této chybě.

Kód:

 Sub VBA_FORMAT1 () A = 19049, 83 A = Formát (A, „STANDARD“) MsgBox A End Sub 

Ve výše uvedeném příkladu jsem deklaroval typ proměnné jako String, proto k této chybě dochází. Takže musím deklarovat proměnnou jako Dim A As String.

Kód:

 Sub VBA_FORMAT1 () Dim A jako řetězec A = 19049.83 A = Formát (A, „STANDARD“) MsgBox A End Sub 

Příklad # 2 - VBA Runtime Error

Pokud v příkazu existuje nemožné matematické příkazy nebo výrazy, dojde k této runtime chybě.

Kód:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Příklad č. 3 - Logické chyby nebo chyby VBA

Tyto chyby lze velmi obtížně sledovat, ani se neobjeví ani se neobjeví chybová zpráva. bude to mít za následek neočekávané akce a nesprávné výsledky.

Příklad: Pokud jsou v kódu přítomny dvě proměnné, může obsahovat nesprávnou. V tomto případě dojde k logické chybě.

Jak předcházet chybám ve VBA?

Podívejme se, jak zabránit výše uvedeným různým typům chyb ve VBA Excelu.

Krok 1: Otevření okna editoru VB Vyberte nebo klikněte na Visual Basic ve skupině Kód na kartě Vývojář nebo můžete přímo kliknout na klávesovou zkratku Alt + F11 .

Krok 2: Chcete-li vytvořit prázdný modul, pod Microsoft Excel objekty, klepněte pravým tlačítkem myši na list 1 (VB_ERROR HANDLING) a vložit modul tak, aby vytvořil nový prázdný modul.

Zpracování chyb VBA s možností ladění

Je lepší kompilovat kód, než jej spustíme. Chcete-li sledovat kompilaci, je třeba dodržovat níže uvedené kroky. Na panelu nástrojů nabídky VB pod možností Debug musíme vybrat kompilační projekt VBA. Když na něj kliknete, zkontroluje kód krok za krokem, jakmile zjistí chybu, zvýrazní ji a objeví se vyskakovací zpráva, takže ji musíte opravit. jakmile je opravena, musíte ji zkompilovat, abyste našli další chybu v kódu.

Poznámka: Pomocí možnosti kompilace můžeme opravit pouze chybu kompilace a syntaxe.

Zpracování chyb VBA pomocí různých příkazů „ON ERROR“

1. On Error Resume Next

Zde bude chyba ignorována a kód bude pokračovat.

V níže uvedeném příkladu nelze číslo 6 vydělit nulou, pokud jej spustíte bez zadání příkazu On Error Resume Next, dojde k níže uvedené chybě runtime.

Kód:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Pokud je On Error Resume Next zadán v horní části kódu za Sub příkazem, ignoruje se chyba runtime a přejde k dalšímu příkazu, což má za následek výstup 6/2 tj. 3 (vyskakovací okno s výsledkem).

Kód:

 Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub 

2. Na chybě GoTo 0 a Error GoTo -1

'On Error GoTo 0' zastaví kód na konkrétním řádku, který způsobí chybu, a zobrazí okno se zprávou, které popisuje nebo označuje chybu.

Kód:

 Sub onError_Go_to_0 () On Error GoTo 0 Kill "C: TempFile.exe" Range ("A1"). Hodnota = 100 / "PETER" End Sub 

Obvykle ukazuje výchozí chování při kontrole chyb, je významné, když je použito spolu s „On Error Resume Next“.

Obvykle můžete sledovat chybové hlášení Runtime, obsahuje možnosti „Pokračovat“, „Konec“, „Ladit“ a „Nápověda“ . pojďme se podívat na použití každého z nich.

  • Možnost Pokračovat bude výjimku ignorovat a kód bude pokračovat, pokud je to možné.
  • Konečná volba ukončí program.
  • Možnost ladění zvýrazní příkaz, kde došlo k chybě. což vám pomůže odladit nebo opravit kód.
  • Možnost nápovědy vás přenese na stránku nápovědy Microsoft MSDN.

On Error GoTo 0 with On Error Resume Next

Kód:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Kill "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Hodnota = 100 / "PETER" End Sub 

Ve výše uvedeném kódu bude ignorovat chyby, dokud nedosáhne příkazu On Error GoTo 0. Po příkazu On Error GoTo 0 se kód vrátí nebo přejde k normální kontrole chyb a spustí očekávanou chybu dopředu. když spustím výše uvedený kód, zobrazí se chyba rozdělení, tj. neshoda typu (číselnou hodnotu nelze dělit textem).

On Error GoTo 0 zakáže jakékoli zachycení chyb, které je aktuálně přítomno v kódu VBA, tj. Vypne zpracování chyb v hlavním kódu, zatímco On Error GoTo -1 vymaže zpracování chyb a nastaví ho na nic, co pomůže nebo vám umožní vytvořit další chybu trap.

3. Při chybě GoTo <LABEL

VBA k přenosu programového řízení na řádek následovaný štítkem, pokud se vyskytnou nějaké chyby za běhu, tj. Kód skočí na určený štítek. Zde nebudou provedeny příkazy kódu mezi řádkem výjimky a štítkem.

Tato metoda je vhodnější a významnější pro opuštění programu elegantně, pokud během provádění dojde k nějaké závažné fatální chybě.

V níže uvedeném kódu VBA, jakmile dojde k chybě na řádku 3, program přenese ovládací prvek na řádek 6, tj. Štítek (vyskakovací zpráva se zobrazí jako „obsluha výjimky“ ).

Kód:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Tento řádek nebude proveden" Exit Sub Error_handler: MsgBox "handler výjimky" End Sub 

Zde si můžete všimnout, že „Exit Sub“ by měl být použit těsně před štítkem „Error_handler:“, je to zajištěno, aby se blok kódu obsluhy chyb zastavil nebo nevykonal, pokud nedojde k žádné chybě. Nyní můžete sešit uložit jako „sešit s makrem Excelu“. Kliknutím na Uložit jako v levém rohu listu.

Opět, pokud otevřete soubor, můžete kliknout na klávesovou zkratku, tj. Fn + Alt + f8, objeví se dialogové okno „Makro“, kde můžete spustit uložený kód makra dle vašeho výběru, nebo můžete kliknout na Fn + Alt + F11 pro plné makro okno.

Co si pamatovat

  • Než začnete psát kód, musíte zajistit, aby bylo zaškrtnuto nebo vybráno selhání při neošetřených chybách . možnost soutisku obecně v možnostech nástroje na panelu nástrojů VBA.
  • Je to výchozí nastavení, které pomáhá zastavit váš kód pro chyby, které nejsou zpracovány.
  • Rozbít všechny chyby: Zastaví váš kód u všech typů chyb.
  • Modul Break-in Class: V případě, že se v kódu použije objekt, jako je uživatelská forma, zvýrazní se přesný řádek, který chybu způsobil.

Doporučené články

Toto je průvodce zpracováním chyb VBA. Zde diskutujeme o tom, jak používat VBA Error Handling v Excelu spolu s několika praktickými příklady a stahovatelnou šablonou Excel. Můžete si také prohlédnout naše další doporučené články -

  1. VBA Declare Array (příklady)
  2. Chyba VBA při chybě
  3. VBA nechráněný list
  4. Sloupce VBA | Excel šablony
  5. VBA Environ

Kategorie: