Excel VBA On Error Resume Next
Zpracování chyb je velmi užitečný a významný mechanismus pro programování jazyků, jako je řízení chyb VBA nebo prevence, což je aspekt zpracování chyb, což znamená přijetí účinných a významných opatření uvnitř skriptu VBA, aby se zabránilo výskytu chybové zprávy. Příkaz Excel VBA On Error Resume Next ignoruje řádek kódu, který způsobuje chybu, a pokračuje nebo směruje provádění na další řádek následující po řádku, který chybu způsobil.
POZNÁMKA: Příkaz On Resume Error Next neopravuje chyby runtime, je to chyba ignorující, kde bude provádění VB programu pokračovat od řádku, který způsobil runtime chybu.V zásadě se při obnovení chyby při příštím použije, když chcete chybu ignorovat a pokračovat nebo pokračovat v provádění kódu do další buňky.
Typy chyb ve VBA
Níže jsou uvedeny různé typy chyb ve VBA:
- Chyba syntaxe nebo chyba analýzy.
- Chyba kompilace nebo kompilace.
- Chyba za běhu.
- Logická chyba.
Výše uvedené chyby lze napravit pomocí ladění a chybových hlášení v kódu. Runtime Error lze zabránit pomocí On Error Resume Next.
Chyba VBA Runtime:
Před vysvětlením příkazu On Error Resume Next byste si měli být vědomi chyby runtime, když v příkazu nelze najít matematické příkazy nebo výrazy, pak dojde k této runtime chybě.
Příklady Excel VBA On Error Resume Next
Níže jsou uvedeny různé příklady On Error Resume Next v Excel VBA:
Zde si můžete stáhnout tuto VBA při obnovení chyby po další Excel šablony zde - VBA při chybě při obnovení chyby další Šablona ExcelVBA On Error Resume Next - Příklad # 1
Zde bude chyba ignorována a provádění kódu 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 v zadané v horní části kódu po příkazu SUB, ignoruje se chyba runtime a přejde k dalšímu příkazu, výsledkem bude výstup 6/2 (vyskakovací okno s výsledkem).
Kód:
Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub
VBA On Error Resume Next - Příklad # 2
Mohu použít On Error Resume Next kdekoli v kódu od začátku do konce. V níže uvedeném příkladu musím provést výpočet 3, tzn
9/3 =?
9/0 =?
9/2 =?
Ve výše uvedeném příkladu můžete pozorovat druhý výpočet, kde žádné číslo nemůže být vyděleno nula, tj. 9 nemůže být vyděleno nula ve druhém kroku. Předpokládejme, že pokud spustíte makro bez zadání příkazu On Error Resume Next, nyní mohu provést kód krok za krokem pomocí kroku do nebo klávesy F8, abych pochopil, jak to funguje.
Nyní spustím výše uvedený kód kliknutím na krok do možnosti nebo na klávesu F8, krok za krokem. Jen jsem zkopírovat výše uvedený kód a začít ho krok za krokem, pro první krok výpočtu se objeví okno 3 zprávy.
Kód:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Když spustím druhý řádek kódu, objeví se níže uvedená chyba runtime ve druhém kroku kódu, kde žádné číslo nelze vydělit nulou, tj. 9 nelze vydělit nulou ve druhém kroku.
Kód:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Nyní, i když kliknu na debug, to nemůže pokračovat dále, kde mě vezme na druhý řádek kódu (dostane zvýrazněné žlutou barvou), kde musím provést opravu. Pokud tedy dále kliknete na volbu Krok do možnosti nebo klávesu F8, třetí výpočet v tomto kódu nebude proveden.
K opravě nebo zpracování této chyby runtime musím použít nebo provést příkaz OnError Resume Next nad druhým kódem nebo na začátku kódu pod podřízeným dílem. tak, že přeskočí tento řádek kódu a přejde ke třetímu kroku kódu a vypočítá hodnotu.
Kód:
Sub RUNTIME_30 () MsgBox 9/3 On Error Resume Next MsgBox 9/0 MsgBox 9/2 End Sub
NEBO
Sub RUNTIME_31 () On Error Resume Next MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Nyní jsem při chybě přidal další pokračování příkazu do kódu, kde můžete použít některý z výše uvedených kódů, pokud jej spustíte krok za krokem, dostanete vyskakovací okno se dvěma zprávami, jedním je výstupní první kód a třetí kód výpočet. On Error Resume Next bude ignorovat runtime chybu ve druhém kódu a přejde na třetí kód.
VBA On Error Resume Next - Příklad # 2
Nyní uvidíme další kombinaci On Error Resume Next s Error GoTo 0. V níže uvedeném kódu bude ignorovat chyby, dokud nedosáhne On Error GoTo 0 příkazu. 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.
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
Když spustím výše uvedený kód, zobrazí se chyba rozdělení, tj. Neshoda typu (číselnou hodnotu nelze dělit textem).
Nyní můžete sešit uložit jako „sešit s makrem Excelu“. Kliknutím na Uložit jako v levém rohu listu.
při opětovném otevření tohoto souboru Excel můžete použít níže uvedenou klávesovou zkratku, tj
Klávesová zkratka Function + Alt + F11 vám pomůže získat přístup ke všem vytvořeným makro kódům sešitu. Klávesová zkratka Function + Alt + F8 vám pomůže otevřít dialogové okno „Makro“, které obsahuje všechny názvy maker, kde můžete spouštět konkrétní vybraný kód makra.
Co si pamatovat
- Chyba běhu bude tiše zachycena a uložena v globálním objektu Err
- On Error Resume Next obvykle zabrání přerušení provádění kódu.
- Vlastnosti objektu chyb (Err Object) se automaticky vymaže, když se v proceduře zpracování chyb použije Resume Next
Doporučené články
Toto je průvodce VBA On Error Resume Next. Zde diskutujeme různé typy chyb ve VBA Excelu spolu s několika praktickými příklady a šablonou Excel ke stažení. Můžete si také prohlédnout naše další doporučené články -
- Kompletní průvodce makry VBA
- VBA DateDiff (příklady se šablonou Excel)
- Jak používat vyhledávání cílů ve VBA?
- VBA Protect Sheet with Syntax
- VBA Environ