Ошибка игнорирования VBA

В этом руководстве будет показано, как убедиться, что VBA игнорирует ошибку при запуске вашего кода.

Иногда, когда вы создаете код VBA, вы действительно хотите, чтобы VBA игнорировал строку кода при возникновении ошибки. На самом деле это может быть весьма полезно, если, например, вы хотите удалить лист, если он существует, но игнорируете эту строку кода, если лист не существует.

(Дополнительную информацию об ошибках VBA см. В нашем Руководстве по обработке ошибок)

При ошибке Возобновить Далее

Чтобы игнорировать строку кода в процедуре, мы используем При ошибке Возобновить Далее утверждение.

123456 Sub TestErrorIgnore ()При ошибке Возобновить ДалееActiveWorkbook.Sheets ("Sheet4"). ВыбратьActiveSheet.Delete'больше кода здесьКонец подписки

В приведенном выше примере При ошибке Возобновить Далее заявление было помещено в начало процедуры. Затем создается код для выбора Sheet4 и его удаления.

Однако из-за При ошибке Возобновить Далее оператор, если код не найдет Sheet4, он просто перейдет к следующей строке и удалит любой активный лист, который найдет.

Это может быть довольно опасно, если вы хотите удалить только лист 4, а не только активный лист. Чтобы предотвратить эту ошибку, мы можем установить переменную на лист 4 и удалить только этот лист, ЕСЛИ он существует.

1234567 Sub TestErrorIgnore ()Dim ws как рабочий листПри ошибке Возобновить ДалееУстановите ws = ActiveWorkbook.Sheets ("Sheet4")ws.Delete'больше кода здесьКонец подписки

Теперь при запуске кода будет удален только Sheet4 ЕСЛИ Sheet4 действительно существует. Если Лист 4 не существует, VBA проигнорирует ошибку и продолжит работу.

Другой пример этого - удаление всех листов из книги с помощью цикла. Поскольку в книге Excel должен быть хотя бы один лист, код удалит все листы, кроме одного.

123456 Sub DeleteSheets ()Dim ws как рабочий листДля каждой страницы в ActiveWorkbook.Sheetsws.DeleteСледующий wsКонец подписки

Приведенный выше код остановится с ошибкой.

Щелкнув Отлаживать перенесет нас в код с выделенной ошибочной строкой!

Однако добавление При ошибке Возобновить Далее строка к коду предотвратит ошибку, и процедура всегда будет оставлять один лист в книге.

12345678 Sub DeleteSheets ()'добавьте сюда строку ошибкиПри ошибке Возобновить ДалееDim ws как рабочий листДля каждой страницы в ActiveWorkbook.Sheetsws.DeleteСледующий wsКонец подписки

При ошибке GoTo 0

Часто, если вы используете При ошибке Возобновить Далее Чтобы игнорировать ошибку, вы хотите, чтобы ошибка была зафиксирована позже в коде, или вы хотите, чтобы ваш код останавливался, если ошибка возникнет в будущем. Мы можем переустановить обработку ошибок, чтобы код снова прерывался при ошибках, добавив строку On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws как рабочий листПри ошибке Возобновить ДалееУстановите ws = ActiveWorkbook.Sheets ("Sheet4")ws.DeleteПри ошибке GoTo 0'больше кода здесьКонец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave