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.


Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows

Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows

Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows Aplikace Microsoft Word otevírá soubory v režimu pouze pro čtení, takže je nelze upravovat? Nebojte se, metody jsou uvedeny níže

Jak opravit nesprávný tisk dokumentů Microsoft Word

Jak opravit nesprávný tisk dokumentů Microsoft Word

Jak opravit chyby při tisku nesprávných dokumentů Microsoft Word Chyby při tisku dokumentů Word se změněným písmem, chaotickými odstavci, chybějícím textem nebo ztraceným obsahem jsou poměrně časté. Nicméně ne

Vymažte kresby perem a zvýrazňovačem na snímcích PowerPoint

Vymažte kresby perem a zvýrazňovačem na snímcích PowerPoint

Pokud jste použili pero nebo zvýrazňovač ke kreslení na snímky aplikace PowerPoint během prezentace, můžete kresby uložit pro další prezentaci nebo je vymazat, takže až ji příště ukážete, začnete s čistými snímky aplikace PowerPoint. Chcete-li vymazat kresby perem a zvýrazňovačem, postupujte podle těchto pokynů: Mazání čar jedna na […]

Obsah knihovny stylů v SharePointu 2010

Obsah knihovny stylů v SharePointu 2010

Knihovna stylů obsahuje soubory CSS, soubory XSL (Extensible Stylesheet Language) a obrázky používané předdefinovanými vzorovými stránkami, rozvržení stránek a ovládací prvky v SharePointu 2010. Chcete-li najít soubory CSS v knihovně stylů webu pro publikování: Vyberte Akce webu→ Zobrazit Veškerý obsah webu. Zobrazí se obsah webu. Knihovna stylů se nachází v […]

Formátování čísel v tisících a milionech v sestavách Excel

Formátování čísel v tisících a milionech v sestavách Excel

Nezahlcujte své publikum gargantuovskými čísly. V aplikaci Microsoft Excel můžete zlepšit čitelnost řídicích panelů a sestav formátováním čísel tak, aby se zobrazovaly v tisících nebo milionech.

Jak sdílet a sledovat weby SharePoint

Jak sdílet a sledovat weby SharePoint

Naučte se používat nástroje sociálních sítí SharePoints, které umožňují jednotlivcům a skupinám komunikovat, spolupracovat, sdílet a propojovat se.

Jak převést data do juliánských formátů v aplikaci Excel

Jak převést data do juliánských formátů v aplikaci Excel

Juliánská data se často používají ve výrobním prostředí jako časové razítko a rychlý odkaz pro číslo šarže. Tento typ kódování data umožňuje maloobchodníkům, spotřebitelům a servisním zástupcům identifikovat, kdy byl produkt vyroben, a tím i stáří produktu. Juliánská data se také používají v programování, armádě a astronomii. Odlišný […]

Jak vytvořit webovou aplikaci Access

Jak vytvořit webovou aplikaci Access

Webovou aplikaci můžete vytvořit v Accessu 2016. Co je tedy vlastně webová aplikace? Web znamená, že je online, a aplikace je jen zkratka pro „aplikaci“. Vlastní webová aplikace je online databázová aplikace přístupná z cloudu pomocí prohlížeče. Webovou aplikaci vytváříte a udržujete ve verzi pro počítače […]

Panel rychlého spuštění v SharePointu 2010

Panel rychlého spuštění v SharePointu 2010

Většina stránek v SharePointu 2010 zobrazuje seznam navigačních odkazů na panelu Snadné spuštění na levé straně stránky. Panel Snadné spuštění zobrazuje odkazy na doporučený obsah webu, jako jsou seznamy, knihovny, weby a stránky publikování. Panel Snadné spuštění obsahuje dva velmi důležité odkazy: Odkaz na veškerý obsah webu: […]

Co znamenají chybové zprávy Řešitel v Excelu?

Co znamenají chybové zprávy Řešitel v Excelu?

U jednoduchých problémů Řešitel v Excelu obvykle rychle najde optimální hodnoty proměnné Řešitel pro účelovou funkci. Ale v některých případech má Řešitel problém najít hodnoty proměnné Řešitel, které optimalizují účelovou funkci. V těchto případech Řešitel obvykle zobrazí zprávu nebo chybovou zprávu, která popisuje nebo popisuje problém, který […]