Редактор vba позволяет автоматически обнаруживать в программах следующие виды ошибок

Ошибки времени выполнения VBA — это ошибки , возникающие во время выполнения кода. Примеры ошибок во время выполнения включают:

  • Ссылка на несуществующую книгу, рабочий лист или другой объект
  • Недопустимые данные, например, ссылка на ячейку Excel, содержащую ошибку
  • Попытка деления на ноль

Вы можете “обрабатывать ошибки” во время выполнения, используя методы, описанные в первой части урока .

☑️ Синтаксические ошибки

Синтаксические ошибки VBA — это ошибки при написании кода. Примеры синтаксических ошибок включают:

  • Неправильный ввод
  • Пропущенная или неправильная пунктуация

Редактор VBA выделяет многие синтаксические ошибки красным цветом:

В редакторе VBA также есть опция “Автоматической проверки синтаксиса”:

Если этот флажок установлен, редактор VBA сгенерирует окно сообщения с предупреждением о синтаксических ошибках после ввода строки кода:

Синтаксические ошибки являются подмножеством ошибок компиляции .

Урок 7. Подсчеты, обработка ошибок Err. Excel+VBA. Система учета Интернет-магазина

☑️ Ошибки компиляции

Прежде чем пытаться запустить процедуру, VBA “скомпилирует” процедуру .

Компиляция преобразует программу из исходного кода (который вы можете видеть) в исполняемую форму (которую вы не видите).

Ошибки компиляции VBA — это ошибки , которые препятствуют компиляции кода.

Хорошим примером ошибки компиляции является пропущенное объявление переменной

Другие примеры включают:

  • For without Next
  • Select without End Select
  • If without End If
  • Calling a procedure that does not exist

⏩ Отладка> Компиляция

Ошибки компиляции будут появляться при попытке запустить процедуру. Но в идеале вы должны выявлять ошибки компиляции до попытки запуска процедуры.

Вы можете сделать это, скомпилировав проект заранее. Для этого перейдите в раздел » Отладка»> «Скомпилировать проект VBA «.

Компилятор “перейдет” к первой ошибке.

Как только вы исправите эту ошибку, скомпилируйте проект снова.

⚠️ Повторяйте, пока все ошибки не будут исправлены.

Вы можете сказать, что все ошибки исправлены, потому что скомпилированный проект VBA будет выделен серым цветом:

Читайте также:
Что такое демо версия программы

☑️ Ошибка переполнения

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

Например, целочисленные переменные могут содержать только значения от -32 768 до 32 768.

Если вы введете большее значение, вы получите сообщение об ошибке переполнения:

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

☑️ Ошибка перехвата VBA

В отличие от других языков программирования, в VBA нет оператора Catch . Однако вы можете воспроизвести оператор Catch, используя On Error Resume Next и If Err.Number <> 0 Then . Это описано выше в разделе Обработка ошибок с помощью Err.Number .

☑️ Как игнорировать ошибку

Чтобы игнорировать ошибки в VBA, просто используйте следующий оператор On Error Resume :

On Error Resume vs. GoTo и работа с ошибками (Серия VBA 36)

On Error Resume Next

⚠️ ВНИМАНИЕ! Как упоминалось ранее, вы должны быть осторожны с использованием этого оператора, поскольку он не исправляет ошибку, он просто игнорирует строку кода, содержащую ошибку.

☑️ VBA выдает ошибку / Err.Raise

Для устранения ошибки в VBA используется метод Err.Raise .

Эта строка кода вызовет ошибку времени выполнения ’13’: несоответствие типов:

Err.Raise (13)

Источник: dzen.ru

Типы ошибок в VBA

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

  • Ошибки компиляции
  • Ошибки выполнения
  • Логические ошибки (баги)

Далее мы поговорим о каждом из трёх типов ошибок VBA подробно.

Ошибки компиляции

Компилятор VBA рассматривает ошибки компиляции как недопустимые и выделяет их в коде ещё до того, как дело дойдёт до запуска макроса.

Если при написании кода допущена синтаксическая ошибка, то редактор VBA сигнализирует об этом немедленно: либо при помощи окна с сообщением, либо выделяя ошибку красным цветом, в зависимости от статуса режима Auto Syntax Check.

Примечание: При включённом режиме Auto Syntax Check каждый раз, при появлении в редакторе Visual Basic во введённом коде синтаксической ошибки, будет показано соответствующее сообщение. Если же этот режим выключен, то редактор VBA продолжит сообщать о синтаксических ошибках, просто выделяя их красным цветом. Опцию Auto Syntax Check можно включить/выключить в меню Tools > Options редактора Visual Basic.

Читайте также:
Программа которая меняет буквы местами

В некоторых случаях ошибка компиляции может быть обнаружена при выполнении компиляции кода, непосредственно перед тем, как макрос будет выполнен. Обычно ошибку компиляции несложно обнаружить и исправить, потому что компилятор VBA даёт информацию о характере и причине ошибки.

Ошибки в Excel VBA

Например, сообщение «Compile error: Variable not defined» при попытке запустить выполнение кода VBA говорит о том, что происходит попытка использовать или обратиться к переменной, которая не была объявлена для текущей области (такая ошибка может возникнуть только если используется Option Explicit).

Ошибки выполнения

Ошибки выполнения возникают в процессе выполнения кода и приводят к остановке выполнения программы. Этот тип ошибок VBA, как правило, также не сложно обнаружить и исправить, так как сообщается информация о характере ошибки и место в коде, где произошла остановка.

Примером такой ошибки может служить попытка выполнить деление на ноль. В результате будет показано сообщение «Run-time error ’11’: Division by zero«.

Ошибки в Excel VBA

В зависимости от структуры проекта VBA, может быть предложено выполнить отладку кода (как показано на рисунке ниже). В этом случае при нажатии на кнопку Debug (в окне сообщения о необходимости отладки) будет выделена цветом строка кода, которая стала причиной ошибки VBA.

Ошибки в Excel VBA

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

В случае если код сложнее, чем в нашем примере, то, чтобы получить больше информации о причине возникновения ошибки VBA, можно проверить значения используемых переменных. В редакторе VBA для этого достаточно навести указатель мыши на имя переменной, или можно открыть окно отслеживания локальных переменных (в меню редактора View > Locals Window).

Коды различных ошибок выполнения расшифрованы на сайте Microsoft Support (на английском). Наиболее часто встречающиеся ошибки VBA перечислены в этой таблице:

Перехват ошибок выполнения

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

Читайте также:
Как в навигаторе удалить программу

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

В этом коде производится попытка открыть файл Excel с именем Data. Если файл не найден, то пользователю будет предложено поместить этот файл в нужную папку. После того, как пользователь сделает это и нажмёт ОК, выполнение кода продолжится, и попытка открыть этот файл повторится. При желании вместо попытки открыть нужный файл, выполнение процедуры Sub может быть прервано в этом месте при помощи команды Exit Sub.

Логические ошибки

Логические ошибки (или баги) возникают в процессе выполнения кода VBA, но позволяют ему выполняться до самого завершения. Правда в результате могут выполняться не те действия, которые ожидалось, и может быть получен неверный результат. Такие ошибки обнаружить и исправить труднее всего, так как компилятор VBA их не распознаёт и не может указать на них так, как это происходит с ошибками компиляции и выполнения.

Например, при создании макроса в процедуре случайно были просуммированы не те переменные, которые требовалось просуммировать. Результат будет ошибочным, но макрос будет продолжать выполняться до завершения.

Редактор Excel VBA предоставляет набор инструментов отладки, которые помогут найти и исправить логические ошибки в коде VBA. В данной статье мы не будем рассматривать подробно эти инструменты. Любознательный пользователь может найти обзор инструментов отладки VBA на сайте Microsoft Help https://office-guru.ru/excel/tipy-oshibok-v-vba-467.html» target=»_blank»]office-guru.ru[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru