VBA o chybových prohlášeních Nejlepší 3 způsoby řešení chyb

Excel VBA o chybovém hlášení

Příkaz VBA On Error je typ mechanismu zpracování chyb, který se používá k navádění kódu k tomu, co dělat, pokud narazí na jakýkoli typ chyby, obvykle když kód narazí na chybu, spuštění se zastaví, ale s tímto příkazem v kódu se provede spuštění kód pokračuje, protože má sadu pokynů, které mají udělat, když narazí na chybu.

Předvídání chyby v kódu z vás dělá profesionála v kódování VBA. Nemůžete udělat kód 100% efektivní. I když jste si jisti svým kódem tak či onak, může to způsobit chybu.

Je téměř nemožný úkol identifikovat a zpracovat všechny druhy chyb, ale máme různé způsoby řešení chyby ve VBA. Při psaní kódu možná nepředpokládáte, že se druh chybového kódu může zvrhnout, ale pokud dojde k jakékoli chybě, strávíte více času laděním než samotným psaním kódu.

Co je to chyba?

Chyba není nic jiného než řádek kódu nelze provést z důvodu funkčnosti nebo nesprávného kódu. Zkuste tedy chybu předvídat a zvládnout ji.

Například pokud se pokusíte odstranit list, který tam není, pak samozřejmě nemůžeme tento řádek kódu spustit.

Chyba má tři typy, jedna je kompilovaná kvůli nedeklarovaným proměnným. Druhou je chyba zadávání dat kvůli chybným zadáním kodérem a třetí je chyba běhu kvůli VBA nemůže rozpoznat řádek kódu. Za pokus o přístup nebo práci na listu nebo sešitu, který tam není.

Ve VBA ale máme příkaz ke zpracování všech těchto druhů chyb, tj. Příkaz „Při chybě“.

Druhy prohlášení o chybě

Klíčovým bodem zpracování chyb ve VBA je prohlášení „Při chybě“. Například při chybě „obnovit další řádek“, „přejít na jiný řádek nebo přeskočit na jiný řádek“ atd.…

Příkaz On Error obsahuje tři druhy příkazů.

  1. GoTo 0 znamená, kdykoli dojde k chybě v době běhu, aplikace Excel nebo VBA by měla zobrazit okno s chybovou zprávou s uvedením druhu chyby, se kterou se setkala. Jakmile VBA provede kód, zakáže všechny obslužné rutiny chyb v daném bloku kódu.
  2. Resume Next znamená, kdykoli dojde k chybě, tento příkaz dá aplikaci Excel ignorovat tuto chybu a přejít na (pokračovat další) další řádek kódu bez zobrazení chybových zpráv. Neznamená to, že chybu opraví; spíše pouze ignoruje chybu.
  3. GoTo (štítek) znamená, že kdykoli VBA narazí na chybu, přejděte na přiřazený štítek. Díky tomu kód přeskočí na konkrétní řádek poskytovaný kodérem.

Nejlepší 3 způsoby řešení chyb ve VBA

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

Předpokládejme, že vydělíte hodnotu 20 číslem 0 a deklarovali jste proměnnou, která jí přiřadí výsledek rozdělení.

Kód:

Sub OnError_Example1 () Dim i As Integer i = 20/0 0 End Sub

Pokud spustíte tento kód, vyvolá níže uvedenou chybu.

Nemůžete tedy žádné číslo vydělit nulovou hodnotou. Číslo chyby za běhu je 11, tj. Dělení nulou.

Nyní do kódu přidám ještě jeden řádek.

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer i = 20/0 j = 20/2 2 End Sub

Teď nahoře přidám prohlášení On error resume next.

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Resume Next i = 20/0 j = 20/2 2 End Sub

Teď, když spustím tento kód, nebude mi dávat žádné chybové zprávy; spíše provede další řádek kódu, tj. j = 20/2.

# 2 - Při chybě GoTo Label

Deklaroval jsem tři proměnné.

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer

U všech těchto tří proměnných přiřadím výpočet dělení.

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

Výsledek všech těchto tří výpočtů se zobrazí v okně se zprávou.

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "Hodnota i je" & i & vbNewLine & "Hodnota j je „& j & _ vbNewLine &“ Hodnota k je „& k & vbNewLine End Sub

Nyní se pokusím tento kód provést, protože výpočet „já“ není správný. Dostaneme chybu běhu 11.

Nyní přidám prohlášení „Při chybě Obnovit další“.

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20/0 j = 20/2 k = 10/5 MsgBox "Hodnota i je" & i & vbNewLine & "The hodnota j je „& j & _ vbNewLine &“ Hodnota k je „& k & vbNewLine End Sub

Pokud to provedu, přeskočí výpočet „I“ a provede zbývající dva výpočty a výsledek je následující.

Nyní místo „Při chybě Obnovit další“ přidám „Při chybě GoTo KCalculation.“

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20/0 j = 20/2 KCalculation: k = 10/5 MsgBox "Hodnota i je" & i & vbNewLine & "Hodnota j je" & j & _ vbNewLine & "Hodnota k je" & k & vbNewLine End Sub
Poznámka: Zde je „KCalculation“ název štítku, který jsem dal; můžete zadat svůj vlastní název štítku bez mezer.

Teď, když provedu tento řádek kódu, nepřeskočí na další řádek. Spíše přeskočí na název štítku, který jsem zadal, tj. „KCalcualtion“. Zde bude ignorovat chybu danou „I“ a také neprovede výpočet „j“, ale ihned přeskočí na „KCalcualtion“.

# 3 - Číslo chyby tisku ve VBA

Na konci kódu můžeme také vytisknout číslo chyby v samostatném okně se zprávou. Následující řádek kódu bude dělat tuto práci.

Kód:

Číslo chyby

Nyní spustím tento kód, první okno se zprávou zobrazí výsledky výpočtu.

Klikněte na OK. Zobrazí se ještě jedno okno se zprávou, které zobrazí číslo chyby.

Jedeme 11; ve výsledku, tj. dělení nulou.

Můžeme také získat číslo chyby místo čísla. Musíme jen změnit kód. Níže je uveden kód.

Kód:

Chybný popis

Zobrazí se tento popis.

Věci k zapamatování

  • Po zadání „On Error Resume Next“ na konci kódu nezapomeňte přidat prohlášení „On Error GoTo 0.“
  • Název štítku by měl být na obou místech stejný.
  • Názvy štítků nemusí být definovány dostatečně předem.
  • Nakonec si vždy přečtěte, v jaké chybě došlo, v samostatném okně se zprávou.

Zajímavé články...