Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Оператор On Error (обработка ошибок)

    Обработка ошибок в VBA Excel с помощью оператора On Error. Синтаксис выражений с оператором On Error. Пример кода с простым обработчиком ошибок.

    Описание оператора On Error

    On Error – это оператор, который используется для отслеживания ошибок во время исполнения кода VBA. При возникновении ошибки On Error передает информацию о ней в объект Err и включает программу обработки ошибок, начинающуюся с указанной строки.

    В первую очередь, обработчик ошибок нужен для пользователей файлов Excel с кодами VBA. Любая ошибка приводит к прекращению выполнения программы, открытию редактора VBA с непонятным для пользователя сообщением или даже к полному зависанию приложения.

    Обработчик ошибок позволяет завершить выполнение программы при возникновении ошибки и вывести сообщение пользователю с ее описанием.

    Синтаксис выражений с On Error

    Включает алгоритм обнаружения ошибок и, в случае возникновения ошибки, передает управление операторам обработчика ошибок с указанной в выражении строки. Stroka – это метка, после которой расположены операторы обработчика ошибок.

    Включает алгоритм обнаружения ошибок и, в случае возникновения ошибки, передает управление оператору, следующему за оператором, вызвавшем ошибку.

    Отключает любой включенный обработчик ошибок в текущей процедуре.

    Простой обработчик ошибок

    Шаблон простейшего обработчика ошибок:

    Оператор On Error GoTo размещается в начале процедуры, метка и обработчик ошибок – в конце процедуры. Название метки можно сменить на другое, в том числе на кириллице.

    Оператор Exit Sub обеспечивает выход из процедуры, если блок операторов выполнен без ошибок. Для вывода описания ошибки используется свойство Description объекта Err.

    Примеры обработки ошибок

    Пример 1
    Деление на ноль:

    Результат выполнения кода VBA Excel с обработчиком ошибок:

    Пример 2
    Выход за границы диапазона:

    Результат выполнения кода VBA Excel с оператором On Error GoTo:

    Пример использования выражений On Error Resume Next и On Error GoTo 0 смотрите в статье: Отбор уникальных значений с помощью Collection.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    4 комментария для “VBA Excel. Оператор On Error (обработка ошибок)”

    1. Здравствуйте, а как передать ошибку в родительскую процедуру? То есть у меня есть Sub 1 который вызывает Sub 2 и Sub 3. в Sub 2 происходит ошибка, я ее обрабатываю и выполняю exit sub. Но потом у меня выходит в Sub 1 и вызывается Sub 3, а мне нужно после возникновения ошибки завершить sub 1. Спасибо.

      1. Евгений

        Здравствуйте, Филипп!
        Объявите в разделе Declarations глобальную переменную, например, Dim myBool As Boolean. В обработчике ошибок процедуры Sub2 присваивайте переменной myBool значение True. В процедуру Sub1 добавьте условие, при выполнении которого будет происходить выход из процедуры:

    2. Александр

      Здравствуйте, на некоторых ресурсах вижу примерно такой код:
      If not Err<>0 then...
      Вопрос: Почему не написать If Err=0 then... Что, есть какая-то разница?

    Обсуждение закрыто.