Chyba VBA při chybě

VBA On Error je snadná metoda pro zpracování neočekávaných výjimek v Excelu Macros.It je známo, že nemůžeme psát kód bez jakékoli chyby. Někdy nám může psaní velkého kódu způsobit chybu i v době kompilace. Abychom se vyhnuli takové situaci, přidáme chybovou zprávu, která namísto správné odpovědi nebo chybového kódu nám zobrazí zprávu s chybovým kódem. Vypadá to, že jsme dostali výstup našeho výpočtu, ale bude to kód chyby, který bude otisknut.

Jak používat Excel VBA na chybové hlášení v Excelu?

Ve VBA existují 3 způsoby chyby. Podívejme se na některé příklady různými způsoby.

Příklad č. 1

Prvním typem chyby je chyba kompilace kódu, která nastane, když je kód nehlášený nebo nemožný. Abychom více porozuměli, použijeme jednoduchý matematický výraz propasti. Za tímto účelem přejděte do nabídky Vložit VBA a vyberte modul, jak je znázorněno níže.

Nyní otevřete podkategorii a přidejte libovolný název. Protože používáme On Error, tak jsme pojmenovali stejně.

 Sub OnError () End Sub 

Nyní definujte libovolná 2 nebo 3 celá čísla. Zde bereme X a Y jako celá čísla.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo End Sub 

Nyní, jak bylo uvedeno výše, vypočítáme dělení matematického výrazu. Pro X vložíme znak do Numerátoru a rozdělí ho 0. A Y bude 20/2, což jsou úplná čísla.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo X = Test / 0 Y = 20/2 End Sub 

Nyní spusťte kód pomocí klávesy F5 nebo kliknutím na tlačítko Přehrát, jak je ukázáno níže. Dostaneme chybu run-time 6, která ukazuje text Text over number error.

Nyní, abychom tuto chybu potlačili, přidáme ještě jeden řádek při chybě resumé, než napíšeme matematický kód. Přeskočí chybový kód, ale nebudeme moci vidět výsledek druhého matematického kódu. To skryje chybovou zprávu, pokud různé řádky kódů, jak je uvedeno níže. Nyní zkuste spustit kód také.

 Sub OnError () Dim X jako Integer, Y As Integer On Error Pokračování Další X = Test / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Nyní, abychom tuto chybu potlačili, přidáme ještě jeden řádek při chybě resumé, než napíšeme matematický kód. Přeskočí chybový kód, ale nebudeme moci vidět výsledek druhého matematického kódu. To skryje chybovou zprávu, pokud různé řádky kódů, jak je uvedeno níže. Nyní zkuste spustit kód také.

Příklad č. 2

V tomto příkladu vezmeme v úvahu matematické dělení, které dává nekonečný výsledek, ale při kódování bude výsledkem # DIV / 0. Abychom to demonstrovali, vezmeme v úvahu další celé číslo Z spolu s X a Y v podkategorii, jak je ukázáno níže.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo End Sub 

Nyní orámujte všechna celá čísla X, Y a Z matematickým vyjádřením dělení a vytiskněte je pomocí funkce MsgBox ve VBA výsledku každého celého čísla.

Níže pro Integer X jsme dělali 10 0, 20 2 a 30 4.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Nyní spusťte kód pomocí klávesy F5 nebo ručně, jak je znázorněno níže.

Jak je vidět na výše uvedeném snímku, chyba run-time 11, což znamená, že chyba souvisí s číslem. Nyní, abyste tento problém překonali, přidejte jeden řádek při chybě resume další před matematickým výrazem, jak je ukázáno níže.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo při chybě Pokračování Další X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Nyní, když spustíme kód, dostaneme nulu pro první celé číslo X a pro Y a Z dostaneme odpovídající divizní odpovědi, jak je ukázáno níže.

Příklad č. 3

Druhý typ chyby je vidět, když v kódu zadáme nesprávné zadání dat. Z tohoto důvodu vezmeme v úvahu 3 celá čísla X, Y a Z otevřením podkategorie ve VBA, jak je ukázáno níže.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo End Sub 

Nyní také zvažte stejné matematické rozdělení, jaké jsme viděli ve výše uvedeném příkladu.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Pokud spustíme kód, dostaneme stejnou chybovou zprávu jako chyba 11 za běhu.

Nyní tuto chybu zrušíte pomocí textu On Error GoTo se slovem „“ Výsledek pro přeskočení chybové zprávy a získání výstupu, který funguje dobře, jak je uvedeno níže.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo při chybě GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Nyní spusťte kód znovu. Dosáhneme stejného výsledku jako v předchozím příkladu.

Při chybě GoTo ZResult nám pomáhá přímo přeskočit uvedené celé výsledné číslo jako my pro celé číslo Z.

Příklad č. 4

Ve třetím typu chyby při spuštění kódu a VBA není schopen pochopit řádek kódu. To lze provést pomocí kódu On Error Resume Next spolu s MsgBox Err.Number . Zvažte stejná data, jaká byla použita ve výše uvedených příkladech. Znovu uvidíme stejná 3 celá čísla X, Y a Z, jak je ukázáno níže.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo End Sub 

A pro tisk výsledku výstupu povolte schránky zpráv pro všechna celá čísla jako výstup.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Nyní, když spustíme kompletní kód, dostaneme chybovou zprávu o matematické chybě Chyba doby běhu 11.

Nyní k odstranění této chyby použijeme On Error Resume Next.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo při chybě Pokračování Další X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

A spusťte kód. Výsledkem bude použití platné matematické linie, jak je ukázáno níže.

Nyní přidejte kódový řádek ZResult před matematické vyjádření z celočíselného dělení Z a přidejte na konec kódu kódový řádek MsgBox Err.Number, jak je znázorněno níže.

 Sub OnError () Dim X jako celé číslo, Y jako celé číslo, Z jako celé číslo při chybě Pokračování Další X = 10/0 Y = 20/2 ZVýsledek: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub Sub 

Nyní spusťte kód pomocí klávesy F5 nebo stisknutím tlačítka přehrávání, jak je ukázáno níže.

Jak vidíme na výše uvedených screenshotech. První okno zprávy má 0, což je přepsání nesprávného matematického výrazu. 2. a 3. místo mají výsledek dělení celých čísel Y a Z. A poslední okno zprávy obsahuje chybový kód 11 runtime, což je pravděpodobně chybový kód dělicích výrazů X integer.

Výhody VBA při chybě

  • Můžeme vypočítat jakýkoli matematický vzorec, i když je nesprávný.
  • Pro větší kódovací struktury, kde jsou šance nebo mají chybu, může použití těchto metod poskytnout správný výsledek i mezi řadou kódů.
  • To dává lepší výsledek ve srovnání s výsledky získanými z normálních excelních výpočtů.

Co si pamatovat

  • Soubor vždy uložte do souboru Excel s makrem, abychom mohli použít vytvořený kód VBA mnohokrát a vícekrát.
  • Před implementací s jakýmkoli vynikajícím požadavkem vždy sestavte písemný kód.
  • V případě potřeby přiřaďte psaný kód libovolnému tlačítku, abychom na něj mohli rychle kliknout a kód spustit.

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

Doporučené články

Toto byl průvodce Excel VBA On Error. Zde jsme diskutovali o tom, jak používat VBA On Error Statement spolu s několika praktickými příklady a stahovatelnou šablonou Excel. Můžete také projít naše další doporučené články -

  1. Jak používat funkci VBA TRIM?
  2. Formát čísla ve VBA
  3. Průvodce Excel VBA dělat, zatímco smyčky
  4. Jak používat funkci vyhledávání VBA?

Kategorie: