VBA On Error Resume Next or Goto 0

Tento tutoriál vysvětlí VBA On Error Resume Next a Goto Statement.

I když je váš kód dokonale sestaven, uživatel nemusí dělat to, co byste očekávali. Z tohoto důvodu musíte do kódu vložit obslužné rutiny chyb, kdykoli může existovat důvod, že může dojít k chybě.

Při chybě Pokračovat Další

Příkaz On Error Resume Next říká VBA, aby přeskočil všechny řádky kódu obsahující chyby a pokračoval na další řádek. VBA bude ignorovat řádek nebo řádky s chybou a přejde na další řádek kódu.

To je užitečné, pokud řádek kódu, který lze ignorovat, není kritický pro úspěšné spuštění makra, ale může být docela nebezpečný, pokud je použit nesprávně, protože může poskytnout neúmyslné výsledky.

Například v následujícím postupu:

123456 Sub HideAllSheets ()Dim ws As WorksheetZa každé ws v ActiveWorkbook.Sheetsws.Visible = FalseDalší wsEnd Sub

Pokud spustíme tento kód, zobrazí se chyba, protože nemůžeme skrýt všechny listy v sešitu - alespoň jeden sešit musí zůstat viditelný.

Pokud však upravíme postup podle níže uvedeného obrázku, kód bude pokračovat za chybou a ponechá viditelný poslední list v sešitu.

1234567 Sub HideAllSheets ()Při chybě Pokračovat DalšíDim ws As WorksheetPro každý ws v ActiveWorkbook.Sheetsws.Visible = FalseDalší wsEnd Sub

Při chybě GoTo 0

Pokud v našem kódu nemáme popisovač chyb, Při chybě Přejít na 0 je výchozí nastavení aplikace Excel. To v podstatě znamená, že když dojde k chybě s Při chybě GoTo 0, VBA zastaví provádění kódu a zobrazí jeho standardní pole s chybovou zprávou, například:

Pokud jsme vložili chybovou past jako Při chybě Pokračovat Další v našem kódu, ale pak chceme chybu znovu nastavit na výchozí hodnotu, můžeme vložit Při chybě Přejít na 0 řádek do našeho kódu.

12345678910 Dílčí chybaGoTo0 ()Při chybě Pokračovat DalšíDim ws As WorksheetPro každý ws v ActiveWorkbook.Sheetsws.Visible = FalseDalší wsPři chybě GoTo 0'Například spusťte více kódu zde:ActiveSheet.Name = "List1"End Sub

Pokud by tedy v našem kódu měla být po Při chybě Přejít na 0 čára, dojde k výchozí chybové zprávě pro Excel. V tomto příkladu již máme list s názvem Sheet1 v ActiveWorkbook jako kód nad Při chybě Přejít na 0 skryje list, ale neodstraní ho. Potom se zobrazí výchozí chybová zpráva aplikace Excel, která naznačuje, že název listu již byl převzat.

Při chybě Přejít na Čára

Můžeme také vynutit, aby se náš kód přesunul na jiný řádek kódu pomocí Při chybě Přejít Čára který říká VBA, aby v případě chyby přešel na konkrétní řádek kódu.

123456789101112 Dílčí chybaGoToLine ()Při chybě Pokračovat DalšíDim ws As WorksheetZa každé ws v ActiveWorkbook.Sheetsws.Visible = FalseDalší wsPři chybě GoTo errhandlerActiveSheet.Name = "List1"Ukončit dílčíerrhandler:MsgBox („Už existuje list s názvem sheet1!“, VbCritical)End Sub

Ve výše uvedeném příkladu, když kód najde list „List1“, přesune se na řádek kódu pod popisek obsluhy chyb - v tomto případě zavolá vlastní okno se zprávou informující uživatele, že list již končí. Štítek obsluhy chyb musí mít za sebou dvojtečku, aby ukázal VBA, že je to štítek.

1 errhandler:

Kód pak skočí dolů na řádek pod štítkem a vrátí vlastní pole se zprávou.

To je užitečné, pokud nechcete, aby váš uživatel mohl kliknutím na Debug přejít do vašeho kódu, protože standardní zpráva aplikace Excel vždy poskytuje možnost Debugovat kód.

Potřebujeme také Ukončit dílčí v postupu. Pokud existuje NE list s názvem Sheet1, pak se spustí tento řádek kódu a přejmenuje aktivní list na Sheet1. Potom chceme, aby kód skončil - nechceme, aby pokračoval v obsluze chyb a zobrazoval pole se zprávou. Řádek Exit Sub poté ukončí proceduru a zastaví kód.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave