Zpracování chyb VBA | Průvodce zpracováním chyb v aplikaci Excel VBA
Zpracování chyb aplikace Excel VBA
Ve VBA, když pracujeme s kódy, se můžeme setkat s mnoha různými typy chyb a způsob řešení těchto chyb je známý jako Zpracování chyb, nyní mohou existovat některé chyby, které se dělají v syntaxi, která sama vyniká, ale když se vyskytne nějaká chyba který je mimo rozsah nebo něco, co neexistuje, Excel nám dává vyskakovací okno pro stejné, je důležité vědět, který kód chyby je pro jakou chybu, abychom identifikovali chybu v kódu.
V aplikaci Excel VBA při provádění libovolné sady kódů dostáváme nějaké chyby. Některé z těchto chyb jsou syntaktické chyby, jiné nelze spustit. Chyba syntaxe je, když ji uživatel vytvoří, je sama zvýrazněna červenou barvou. Ale když existuje jakýkoli jiný druh chyby za běhu, jak to zvládneme a jak se dostaneme nad rámec toho, budeme se v tomto článku zabývat.
Kromě syntaktických chyb je třeba při provádění jakékoli sady kódů řešit i další chyby běhu. Nejprve mi dovolte uvést příklad, jak dochází k další runtime chybě. Podívejte se na níže uvedený kód,
Toto je ukázkový kód při spuštění vrátí to, co je napsáno ve funkci msgbox. Ale jak vidíme, ve druhém řádku kódu je 4/0, což z matematického hlediska není možné, takže vrátí chybu běhu. Provedeme výše uvedený kód a uvidíme chybu, kterou dostaneme.
To je chyba, kterou dostáváme při provádění daného kódu. Nyní, jak tuto chybu vyřešíme, provádí Error Handling.
Existují dvě metody pro zpracování chyb, které jsou:
- Při chybě přejděte a
- Při chybě Pokračovat dále.
Vysvětlení
Jak je vysvětleno výše, ve VBA máme mnoho typů chyb, některé jsou syntaxe a některé jsou za běhu. Chyby syntaxe jsou již zvýrazněny červenou barvou, například viz níže screenshot,
Zatímco druhý je chyby běhu. V zásadě aplikace Excel provede následující tři věci, buď zobrazí chybu, nebo ji ignoruje, nebo zobrazí určitou sadu pokynů. K provádění těchto úkolů musíme dávat pokyny a toto se nazývá Zpracování chyb.
Jak zacházet s chybami v kódu VBA?
Tuto šablonu pro zpracování chyb VBA pro Excel si můžete stáhnout zde - Šablona pro zpracování chyb VBA pro ExcelPříklad č. 1
Pro první příklad si vezmeme první kód, který jsme si vzali jako ukázku. Ve výše uvedeném příkladu jsme viděli, že kód poskytuje chybu doby běhu u druhé funkce msgbox.
Po otevření dílčí funkce napište následující kód,
Kód:
Sub Sample () Při chybě Pokračovat Další MsgBox 4/2 MsgBox 4/0 0 MsgBox 4/1 Konec Sub
Nyní, když provedeme výše uvedený kód, vidíme, že řádek kódu, který má chybu, se neprovede. Excel přeskočí tento řádek a pokračuje na dalším řádku.
Existuje další metoda pro zpracování chyby, je vba Goto prohlášení, poskytujeme Excel cíl jít, když zjistí chybu. Místo předchozího kódu pro zpracování chyb jsme vložili, zapište si následující kód,
Kód:
Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub
Dáváme Excel Az jako cíl, kam jít, pokud najde chybu. Nyní po msgboxu napište další kód, jak je uvedeno níže,
Kód:
Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 0 MsgBox 4/1 Hotovo: Ukončit Sub
Nyní musíme definovat cíl az jako to, co by mělo dělat, když Excel najde chybu v kódu.
Kód:
Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Hotovo: Exit Sub az: MsgBox "This is an error" & Err.Popis End Sub
Nyní, když spustíme tento kód, vidíme zobrazený výsledek.
Toto je první výsledek pole se zprávou a protože víme, že máme chybu v dalším řádku našeho kódu, podívejme se na výsledek, který získá Excel.
Popis chyby v kódu výše nám pomáhá přesně ukázat, k jaké chybě v našem kódu došlo.
Příklad č. 2
Naučili jsme se, jak zacházet s chybami v našich kódech. Podívejme se na další příklad, jak řešit chyby. Zvažte následující kód jako náš druhý příklad.
Máme poněkud podobnou chybu z příkladu 1. Chyba je v řádku d = i / b. Nyní tyto chyby vyřešíme pomocí dvou výše vysvětlených metod.
Po otevření dílčí funkce napište následující kód,
Kód:
Sub Sample2 () On Error Resume Next bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub
Nyní, když spustíme náš kód, vidíme, že ignoruje druhý řádek a zobrazuje pouze hodnotu C.
Výše uvedená obslužná rutina chyb byla dalším pokračováním, nyní použijeme Přejít na, kde řekneme Excel, kam má jít, když narazí na chybu. Zapište si následující kód,
Kód:
Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d
Bx je cíl daný, když narazí na chybu poté, co msgbox D zapíše následující kód,
Kód:
Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub
Nyní musíme definovat cíl Bx, co má dělat, když narazí na chybu, takže si zapište následující kód,
Kód:
Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub bx: MsgBox „Toto je další chyba“ & Err.Description End Sub
Nyní, když spustíme kód, vidíme, že excel nám jako první dává hodnotu C.
Nyní v dalším kroku nám poskytne výzvu, kterou jsme poskytli, když narazí na chybu.
Takto zpracováváme běžné runtime chyby v Excel VBA.
Věci k zapamatování
O zpracování chyb je třeba si pamatovat několik věcí:
- Při chybě Pokračovat Další Ignoruje chybu.
- Při chybě GoTo dává vynikne cíl, když narazí na chybu.
- Popis slouží k zobrazení přesné chyby, ke které došlo u uživatele.