Tento tutoriál předvede, jak zajistit, aby VBA při spuštění kódu ignoroval chybu.
Někdy při vytváření kódu VBA ve skutečnosti chcete, aby VBA ignoroval řádek kódu, když dojde k chybě. To může být ve skutečnosti velmi užitečné, pokud například chcete odstranit list, pokud existuje, ale ignorovat tento řádek kódu, pokud list neexistuje.
(Další informace o chybách VBA najdete v naší příručce pro zpracování chyb)
Při chybě Pokračovat Další
K ignorování řádku kódu v proceduře používáme Při chybě Pokračovat Další tvrzení.
123456 | Dílčí testErrorIgnore ()Při chybě Pokračovat DalšíActiveWorkbook.Sheets („Sheet4“). VyberteActiveSheet.Delete'více kódu zdeEnd Sub |
Ve výše uvedeném příkladu je Při chybě Pokračovat Další prohlášení bylo umístěno na začátek procedury. Kód je potom vytvořen tak, aby vybral List4 a poté jej odstranil.
Nicméně kvůli Při chybě Pokračovat Další prohlášení, pokud kód nenajde list4, bude pokračovat na další řádek a odstraní jakýkoli aktivní list.
To může být docela nebezpečné, pokud jste chtěli odstranit pouze list 4, a ne pouze list, který je aktivní. Abychom této chybě předešli, můžeme nastavit proměnnou na list 4 a odstranit pouze ten list, POKUD existuje.
1234567 | Dílčí testErrorIgnore ()Dim ws As WorksheetPři chybě Pokračovat DalšíNastavit ws = ActiveWorkbook.Sheets ("Sheet4")ws.Smazat'více kódu zdeEnd Sub |
Nyní, když je kód spuštěn, bude odstraněn pouze Sheet4 LI List 4 skutečně existuje. Pokud list 4 neexistuje, VBA bude chybu ignorovat a bude pokračovat.
Dalším příkladem toho je, pokud chcete odstranit všechny listy ze sešitu pomocí smyčky. Protože sešit aplikace Excel musí mít alespoň jeden list, kód odstraní všechny listy kromě jednoho.
123456 | Dílčí mazací listy ()Dim ws As WorksheetZa každé ws v ActiveWorkbook.Sheetsws.SmazatDalší wsEnd Sub |
Výše uvedený kód se zastaví s chybou.
Klikání Ladit vezme nás do kódu se zvýrazněným problematickým řádkem!
Nicméně přidání Při chybě Pokračovat Další řádek do kódu zabrání chybě a rutina vždy nechá jeden list v sešitu.
12345678 | Dílčí mazací listy ()'sem přidejte chybový řádekPři chybě Pokračovat DalšíDim ws As WorksheetZa každé ws v ActiveWorkbook.Sheetsws.SmazatDalší wsEnd Sub |
Při chybě GoTo 0
Často, pokud používáte Při chybě Pokračovat Další Chcete -li chybu ignorovat, budete chtít v kódu později zachytit chyby, nebo chcete, aby se váš kód přestal spouštět, pokud se v budoucnu vyskytne chyba. Zpracování chyb můžeme znovu nastavit tak, aby se kód při chybách opět zlomil přidáním řádku Při chybě GoTo 0.
12345678 | Dílčí testErrorIgnore ()Dim ws As WorksheetPři chybě Pokračovat DalšíNastavit ws = ActiveWorkbook.Sheets ("Sheet4")ws.SmazatPři chybě GoTo 0'více kódu zdeEnd Sub |