Типы ошибок в VBA для Excel - список и примеры

Пользователи часто сталкиваются с различными типами ошибок в VBA. Ниже мы предлагаем несколько стратегий для их решения. Мы рассмотрим методы, которые вы можете использовать для проверки вашего кода во время тестирования, а также методы выявления ошибок во время выполнения.

Типы ошибок в VBA для Excel

Тестирование и отслеживание различных типов ошибок в коде VBA может занять много времени и утомительно. Нередко можно услышать от программистов. Программирование Программирование - это процесс написания инструкций для компьютера. Это похоже на рецепт для человека. Рецепт содержит список действий, при этом более 30% их времени тратится на тестирование.

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

Типы ошибок VBA

Чтобы упростить задачу, мы разделили типы ошибок кодирования на три группы. Для каждой группы мы рассмотрим несколько примеров, а затем обсудим, как вы можете исследовать и разрешить их.

1. Синтаксические ошибки - определенная строка кода написана неправильно.

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

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

Что такое синтаксические ошибки?

Синтаксические ошибки - это способ VBA сказать вам, имеет ли ваш код смысл на самом базовом уровне. Мы можем провести простое сравнение с правилами написания предложения на английском языке:

  • Требуется тема .
  • Требуется глагол .
  • В начале требуется заглавная буква.
  • Пунктуация обязательна в конце.
  • Объекты, прилагательные и другие грамматические особенности необязательны.

Джейн нашла 18 ошибок в своем коде VBA .

Аналогичным образом VBA накладывает определенные правила на то, что требуется в определенных ситуациях. Например, при запуске в коде базового условного оператора IF необходимо воспроизвести следующие правила синтаксиса для первой строки оператора IF;

  • Он должен начинаться с Если
  • Далее должен быть логический тест , например x> 10
  • Наконец, он должен заканчиваться словом then

Если NumberErrors> 20, тогда

Если вы нарушите вышеуказанные правила английского языка или VBA, ваша грамматика (английский) или синтаксис (VBA) будет считаться неправильной.

Как определить синтаксическую ошибку

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

Основная синтаксическая ошибка:

Ошибка основного синтаксиса

Окно сообщения об ошибке синтаксиса:

Окно сообщения об ошибке синтаксиса

Чтобы убедиться, что проверки выполняются во время набора текста, включите «Автоматическая проверка синтаксиса» в меню «Параметры».

Автоматическая проверка синтаксиса

Как исправить синтаксические ошибки

Синтаксические ошибки представляют собой ошибки в том, как написана конкретная строка вашего кода. Их необходимо исправить, прежде чем вы сможете запустить свой код. Если у вас есть опыт, красный текст будет всем, что вам нужно, чтобы обнаружить ошибку. Но если вы все еще застряли, просто поищите в Интернете «if statement syntax vba» или любой другой вариант, соответствующий вашим потребностям, и вы найдете множество примеров конкретной строки, которую вы пытаетесь написать.

Что такое ошибки компиляции?

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

Как определить ошибку компиляции

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

В качестве альтернативы, если ваш проект длинный или сложный и включает в себя несколько процедур, может быть полезно скомпилировать код перед его запуском. Это предотвращает ситуации, когда половина вашего кода выполняется успешно, а затем выскакивает ошибка. Вы можете скомпилировать код VBA, щелкнув меню «Отладка» → «Скомпилировать проект VBA».

Пример 1

Ошибка компиляции из-за отсутствия части «End if» в инструкции IF. Каждая отдельная строка в коде верна, но вместе они не представляют собой полный оператор IF.

Ошибка компиляции - пример 1

Пример 2

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

Ошибка компиляции - Пример 2

Пример 3

Ошибки компиляции распространены при использовании Option Explicit и возникают, когда переменная не была явно определена. При активированном Option Explicit требуется оператор Dim для объявления всех переменных перед их использованием в вашем коде.

Ошибка компиляции - Пример 3

Как исправить ошибки компиляции

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

Если вам не сразу понятно, в чем проблема из сообщения об ошибке, попробуйте использовать справочный центр Microsoft, чтобы получить представление о том, как именно должны быть написаны ваш оператор или функция. Вот пример сообщения об ошибке «Блокировать, если без конца, если» на веб-сайте Microsoft.

Блокировать, если без конца, если

Что такое ошибки во время выполнения?

После исправления синтаксических ошибок и ошибок компиляции вы готовы приступить к тестированию или правильному запуску кода, чтобы увидеть, насколько хорошо он выполняет желаемые действия или вычисления. Мы называем период тестирования или живого выполнения кода «средой выполнения».

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

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

Как определить ошибки времени выполнения

Отладка VBA VBA: как отлаживать код При написании и запуске кода VBA важно, чтобы пользователь научился отлаживать ошибки кода. Пользователь Excel ожидает, что функция code выделит код проблемы желтым цветом и даст нам небольшую подсказку относительно того, что вызывает проблему.

Пример 1

Хотя приведенный ниже код просто делит одно число на другое, в некоторых случаях это невозможно. Например, если ячейка A1 = 2 и ячейка A2 = 0, деление на ноль невозможно. Окно ошибки времени выполнения включает кнопку отладки, которая выделяет код проблемы.

Ошибка выполнения - пример 1

Ошибки времени выполнения - пример 1a

Пример 2

В этом примере я создал массив для сбора названий n компаний на моем листе. Затем я попытался сослаться на шестой элемент, который может существовать или не существовать во время выполнения. VBA выдает сообщение об ошибке во время выполнения и позволяет мне нажать «Отладка», чтобы исследовать проблему.

Ошибка выполнения - пример 2

Как только я нажимаю «Отладка», VBA выделяет строку кода, вызывающую проблему. Теперь я должен использовать сообщение «Нижний индекс вне допустимого диапазона», чтобы выяснить, что происходит не так. Ошибка индекса вне допустимого диапазона обычно означает, что ваш код в принципе хорош, но конкретный элемент, который вы ищете, не может быть найден. Чаще всего это происходит при ссылке на ячейки или диапазоны в Excel, а также на массивы в вашем коде VBA.

Ошибка выполнения - пример 2a

Чтобы убедиться, что функция отладки включена, в меню «Параметры»> «Общие»> «Отлов ошибок» по умолчанию должно быть выбрано «Прерывание при необработанных ошибках». Оставьте этот вариант отмеченным.

Перерыв в связи с необработанными ошибками

Как исправить ошибки времени выполнения

Поскольку ошибки времени выполнения разнообразны и сложны по своей природе, решения также разнообразны. Два общих метода уменьшения количества ошибок времени выполнения:

Отлов ошибок

Хорошая идея - подумать о возможных сценариях, с которыми может столкнуться ваш код. Еще лучше протестировать свой код на практических данных или с реальными пользователями. Это позволит вам распознавать такие сценарии в вашем VBA с ветвлением кода на разные результаты в зависимости от наличия ошибок.

Пример 1

Здесь строка «On Error Resume Next» заставляет код продолжить работу, даже если обнаружена ошибка. Затем мы используем тест If Err> 0 для создания предупреждающего сообщения, только если ошибка существует. 'On Error Goto 0' сбрасывает VBA в состояние по умолчанию.

Отлов ошибок - пример 1

Пример 2

Здесь код рассчитывает доход в день на основе ежемесячного дохода и определенного количества дней. Если количество дней не указано, мы переходим к определенной точке в нашем коде под названием «NoDaysInMonthProvided:», где мы используем среднее количество дней в месяце в качестве базового предположения. Хотя это упрощенно, оно ясно показывает, как отловить ошибку и перейти к другой точке вашего кода.

Отлов ошибок - Пример 2

Понятные инструкции пользователя

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

Резюме

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

Дополнительные ресурсы

Finance является официальным поставщиком глобального сертификата Certified Banking & Credit Analyst (CBCA) ™ CBCA ™ Certification. Аккредитация Certified Banking & Credit Analyst (CBCA) ™ является мировым стандартом для кредитных аналитиков, который охватывает финансы, бухгалтерский учет, кредитный анализ, анализ денежных потоков. , моделирование ковенантов, погашение кредитов и многое другое. программа сертификации, призванная помочь любому стать финансовым аналитиком мирового уровня. Чтобы продолжить карьеру, вам будут полезны следующие дополнительные ресурсы:

  • #REF Ошибки Excel #REF Ошибки Excel #REF Ошибки Excel вызывают большие проблемы с электронными таблицами. Узнайте, как найти и исправить ошибки #REF в Excel, из этого краткого руководства с примерами и скриншотами. # ССЫЛКА! ошибка («ref» означает ссылку) - это сообщение, которое Excel отображает, когда формула ссылается на ячейку, которая больше не существует, вызванная удалением ячеек, которые
  • Примеры Excel VBA Примеры Excel VBA Excel VBA позволяет пользователю создавать макросы, которые автоматизируют процессы в Excel. В этом руководстве будут использоваться примеры Excel VBA, чтобы показать, как записывать макрос, настраивая макрос, как объявлять переменные и как ссылаться на данные.
  • Советы по написанию VBA в Excel Советы по написанию VBA в Excel Ниже перечислены девять советов по написанию VBA в Excel. VBA для Excel предоставляет бесчисленные возможности для пользовательских вычислений и автоматизации.
  • Методы VBA Методы VBA Метод VBA - это фрагмент кода, прикрепленный к объекту VBA, переменной или ссылке на данные, который сообщает Excel, какое действие следует выполнить в отношении этого объекта. Копирование, вставка и выбор - это лишь некоторые примеры методов VBA, которые можно выполнить.