Грешка при игнориране на VBA

Този урок ще покаже как да се гарантира, че VBA пренебрегва грешка при изпълнение на вашия код.

Понякога, когато конструирате VBA код, всъщност искате VBA да игнорира ред код, когато възникне грешка. Това всъщност може да бъде доста полезно, ако например искате да изтриете лист, ако той съществува, но пренебрегнете този ред код, ако листът не съществува.

(Вижте нашето Ръководство за обработка на грешки за повече информация относно грешките на VBA)

На грешка възобновяване следващо

За да игнорираме ред код в процедура, използваме На грешка възобновяване следващо изявление.

123456 Sub TestErrorIgnore ()На грешка възобновяване следващоActiveWorkbook.Sheets ("Sheet4"). ИзберетеActiveSheet.Delete'още код тукEnd Sub

В горния пример, an На грешка възобновяване следващо изявлението е поставено в горната част на процедурата. След това кодът се конструира, за да избере Sheet4 и след това да го изтрие.

Въпреки това, поради На грешка възобновяване следващо изявление, ако кодът не намери Sheet4, той просто ще продължи към следващия ред и ще изтрие който и да е активен лист, който намери.

Това може да бъде доста опасно, ако искате да изтриете само лист 4, а не само листа, който е активен. За да предотвратим тази грешка, можем да зададем променлива на лист 4 и да изтрием само този лист АКО съществува.

1234567 Sub TestErrorIgnore ()Затъмнете като работен листНа грешка възобновяване следващоЗадайте ws = ActiveWorkbook.Sheets ("Sheet4")ws.Delete'още код тукEnd Sub

Сега, когато кодът се изпълнява, само Sheet4 ще бъде изтрит АКО Sheet4 действително съществува. Ако лист 4 не съществува, VBA ще игнорира грешката и ще продължи.

Друг пример за това е, ако искате да изтриете всички листове от работната си книга, като използвате цикъл. Тъй като работната книга на Excel трябва да има поне един лист, кодът ще изтрие всички листове с изключение на един.

123456 Sub DeleteSheets ()Затъмнете като работен листЗа всеки ws в ActiveWorkbook.Sheetsws.DeleteСледващата wsEnd Sub

Горният код ще спре с грешка.

Щракване Отстраняване на грешки ще ни въведе в кода с подчертан обиден ред!

Въпреки това, добавяйки На грешка възобновяване следващо ред към кода ще предотврати грешката и програмата винаги ще оставя един лист в работната книга.

12345678 Sub DeleteSheets ()„добавете ред за грешка тукНа грешка възобновяване следващоЗатъмнете като работен листЗа всеки ws в ActiveWorkbook.Sheetsws.DeleteСледващата wsEnd Sub

При грешка GoTo 0

Често, ако използвате На грешка възобновяване следващо за да игнорирате грешка, искате улавяне на грешки по -късно в кода или искате кодът ви да спре да работи, ако в бъдеще възникне грешка. Можем да пренастроим обработката на грешки, така че кодът отново да прекъсне грешките, като добавим реда On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Затъмнете като работен листНа грешка възобновяване следващоЗадайте ws = ActiveWorkbook.Sheets ("Sheet4")ws.DeleteПри грешка GoTo 0'още код тукEnd Sub

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave