Obslužné rutiny chyb pro makra Excelu

Obslužné rutiny chyb vám umožňují určit, co se stane, když dojde k chybě při spuštění kódu makra aplikace Excel. Obslužné rutiny chyb jsou řádky podobné následujícím:

On Error GoTo MyError

Bez obslužných programů chyb každá chyba, která se objeví ve vašem kódu, vyzve Excel k aktivaci méně užitečné chybové zprávy, která obvykle jasně nevyjadřuje, co se stalo. S pomocí obslužných rutin chyb se však můžete rozhodnout chybu ignorovat nebo kód elegantně ukončit se svou vlastní zprávou pro uživatele.

Existují tři typy příkazů On Error:

  • On Error GoTo SomeLabel: Kód skočí na zadaný štítek.

  • On Error Resume Next: Chyba je ignorována a kód pokračuje.

  • On Error GoTo 0: VBA se resetuje na normální chování při kontrole chyb.

On Error GoTo SomeLabel

Někdy chyba ve vašem kódu znamená, že musíte postup elegantně ukončit a dát uživatelům jasnou zprávu. V těchto situacích můžete pomocí příkazu On Error GoTo sdělit aplikaci Excel, aby skočila na určitý řádek kódu.

Například v následujícím malém úryvku kódu řeknete Excelu, aby vydělil hodnotu v buňce A1 hodnotou v buňce A2, a poté umístil odpověď do buňky A3. Snadný. Co by se mohlo pokazit?

Dílčí makro1()
Rozsah("A3").Hodnota = Rozsah("A1").Hodnota / Rozsah("A2").Hodnota
End Sub

Jak se ukazuje, mohou se pokazit dvě hlavní věci. Pokud buňka A2 obsahuje 0, dostanete chybu dělení 0. Pokud buňka A2 obsahuje nečíselnou hodnotu, zobrazí se chyba nesouladu typu.

Chcete-li se vyhnout nepříjemné chybové zprávě, můžete Excelu sdělit, že při chybě chcete, aby spuštění kódu přešlo na štítek s názvem MyExit.

V následujícím kódu je po štítku MyExit následována zpráva pro uživatele, která poskytuje přátelskou radu namísto ošklivé chybové zprávy. Všimněte si také řádku Exit Sub před štítkem MyExit, který zajišťuje, že kód jednoduše skončí, pokud nenastane žádná chyba:

Dílčí makro1()
Při chybě GoTo MyExit
Rozsah("A3").Hodnota = Rozsah("A1").Hodnota / Rozsah("A2").Hodnota
Exit Sub
MyExit:
MsgBox "Použijte prosím platná nenulová čísla"
End Sub

Při chybě pokračovat dále

Někdy chcete, aby Excel ignoroval chybu a jednoduše pokračoval ve spuštění kódu. V těchto situacích můžete použít příkaz On Error Resume Next.

Například následující část kódu je určena k odstranění souboru s názvem GhostFile.exe z adresáře C:Temp. Po odstranění souboru se uživateli zobrazí pěkné okno se zprávou, že soubor je pryč:

Dílčí makro1()
Zabijte "C: TempGhostFile.exe"
MsgBox "Soubor byl smazán."
End Sub

Kód funguje skvěle, pokud skutečně existuje soubor k odstranění. Pokud však z nějakého důvodu soubor s názvem GhostFile.exe na jednotce C:Temp neexistuje, dojde k chybě.

V tomto případě je vám jedno, jestli tam soubor není, protože jste ho stejně chtěli smazat. Takže můžete chybu jednoduše ignorovat a pokračovat v kódu.

Pomocí příkazu On Error Resume Next se kód spustí bez ohledu na to, zda cílový soubor existuje či nikoli:

Dílčí makro1()
Při chybě pokračovat dále
Zabijte "C: TempGhostFile.exe"
MsgBox "Soubor byl smazán."
End Sub

Při chybě GoTo 0

Při použití určitých chybových příkazů může být nutné resetovat chování VBA při kontrole chyb. Abyste pochopili, co to znamená, podívejte se na následující příklad.

Zde nejprve chcete odstranit soubor s názvem GhostFile.exe z adresáře C:Temp. Chcete-li se vyhnout chybám, které mohou pocházet ze skutečnosti, že cílový soubor neexistuje, použijte příkaz On Error Resume Next. Poté se pokusíte provést nějakou podezřelou matematiku dělením 100/Mike:

Dílčí makro1()
Při chybě pokračovat dále
Zabijte "C: TempGhostFile.exe"
Rozsah ("A3"). Hodnota = 100 / "Mike"
End Sub

Spuštění tohoto kusu kódu by mělo vygenerovat chybu kvůli fuzzy matematice, ale nedělá. Proč? Protože poslední instrukce, kterou jste dali kódu, byla On Error Resume Next. Jakákoli chyba zjištěná po tomto řádku je efektivně ignorována.

Chcete-li tento problém vyřešit, můžete pomocí příkazu On Error GoTo 0 obnovit normální chování při kontrole chyb:

Dílčí makro1()
Při chybě pokračovat dále
Zabijte "C: TempGhostFile.exe"
Při chybě GoTo 0
Rozsah ("A3"). Hodnota = 100 / "Mike"
End Sub

Tento kód bude ignorovat chyby až do příkazu On Error GoTo 0. Po tomto příkazu se kód vrátí k normální kontrole chyb a spustí očekávanou chybu pramenící z fuzzy matematiky.

Leave a Comment

Jak používat příkazy Znovu a Opakovat ve Wordu 2016

Jak používat příkazy Znovu a Opakovat ve Wordu 2016

Objevte, jak efektivně využívat příkazy Znovu a Opakovat ve Wordu 2016 pro opravy dokumentů a zlepšení pracovního toku.

Jak změnit zamčené a skryté formátování buněk

Jak změnit zamčené a skryté formátování buněk

Naučte se, jak efektivně změnit stav buněk v Excelu 2010 z uzamčených na odemčené nebo z neskrytého na skrytý s naším podrobným průvodcem.

Jak přeložit text v cizím jazyce ve Wordu 2016

Jak přeložit text v cizím jazyce ve Wordu 2016

Zjistěte, jak efektivně využít překladové nástroje v Office 2016 pro překlad slov a frází. Překlad Gizmo vám pomůže překládat text s lehkostí.

Jak používat šablony ve Wordu 2013

Jak používat šablony ve Wordu 2013

Šablona ve Wordu šetří čas a usnadňuje vytváření dokumentů. Zjistěte, jak efektivně používat šablony ve Wordu 2013.

Jak vytvořit e-mailová upozornění pro skupinu SharePointu

Jak vytvořit e-mailová upozornění pro skupinu SharePointu

Zjistěte, jak si vytvořit e-mailová upozornění ve SharePointu a zůstat informováni o změnách v dokumentech a položkách.

Obsah SharePoint Online a typy obsahu

Obsah SharePoint Online a typy obsahu

Objevte skvělé funkce SharePoint Online, včetně tvorby a sdílení dokumentů a typů obsahu pro efektivnější správu dat.

Výpočet fiskálního čtvrtletí pro datum v Excelu

Výpočet fiskálního čtvrtletí pro datum v Excelu

Zjistěte, jak vypočítat fiskální čtvrtletí v Excelu pro různá data s použitím funkce CHOOSE.

Jak vytvořit hypertextový odkaz na jiný snímek v aplikaci PowerPoint 2007

Jak vytvořit hypertextový odkaz na jiný snímek v aplikaci PowerPoint 2007

Zjistěte, jak vytvořit hypertextový odkaz v PowerPointu, který vám umožní pohodlně navigovat mezi snímky. Použijte náš návod na efektivní prezentace.

Zobrazit starší verzi dokumentu aplikace Word 2016

Zobrazit starší verzi dokumentu aplikace Word 2016

Uložili jste nedávno svůj dokument? Náš návod vám ukáže, jak zobrazit starší verze dokumentu v aplikaci Word 2016.

Jak přiřadit makra pásu karet a panelu nástrojů Rychlý přístup v Excelu 2013

Jak přiřadit makra pásu karet a panelu nástrojů Rychlý přístup v Excelu 2013

Jak přiřadit makra vlastní kartě na pásu karet nebo tlačítku na panelu nástrojů Rychlý přístup. Návod pro Excel 2013.