В VBA вы можете запрограммировать свой код для выхода из подпрограммы при возникновении ошибки. Для этого используйте При ошибке GoTo а также Выйти из подводной лодки.
При ошибке Goto сообщает VBA, что при обнаружении ошибки «Перейти к» определенному разделу вашего кода. Бывший:
1 | При ошибке Перейти к ErrorHandler |
Затем из этого раздела вы можете указать VBA Exit Sub для выхода из подпроцедуры:
12 | ErrorHandler:Выйти из подводной лодки |
Читайте дальше, чтобы увидеть эти строки кода в действии …
Выход из подпрограммы при ошибке в VBA
В этом примере мы сгенерируем ошибку путем деления на ноль:
1 | я = 5/0 |
См. Полный код ниже. Когда VBA считывает ошибку, он «переходит» в раздел кода ErrorHandler и завершает работу:
123456789101112131415 | Sub TestError ()Dim i как целое числоПри ошибке Перейти к ErrorHandlerя = 5/0'Сделай что-нибудь со мнойMsgBox iВыйти из подводной лодкиErrorHandler:MsgBox "Если ошибка, то выйдите из Sub"Выйти из подводной лодкиКонец подписки |
Чтобы указать обработку ошибок, вам сначала нужно объявить При ошибке GoTo утверждение. Он должен быть объявлен в начале Sub:
1 | При ошибке Перейти к ErrorHandler |
После этого нужно объявить код обработки ошибок. Обычно это конец кода:
123 | ErrorHandler:MsgBox "Если ошибка, то выйдите из Sub"Выйти из подводной лодки |
Мы добавляем Exit Sub над ErrorHandler, потому что мы хотим запускать код ErrorHandler только в случае ошибки.
12345 | Выйти из подводной лодкиErrorHandler:MsgBox "Если ошибка, то выйдите из Sub"Выйти из подводной лодкиКонец подписки |
Если запустить Sub, произойдет ошибка из-за деления на ноль. В этот момент будет выполнен код обработки ошибок. Появится окно сообщения, и подпрограмма будет закрыта.
Изображение 1. VBA при ошибке Exit Sub
Если вы хотите узнать, как завершить выполнение кода в VBA, щелкните по этой ссылке: VBA End
Если вы хотите узнать, как выйти из подпрограммы или функции, щелкните по этой ссылке: VBA Exit Sub или Function