Найти в Дзене

📌 Рекомендации по обработке ошибок VBA. Часть 2 Типы ошибок VBA

Оглавление

Ребята, всем привет! 👋

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

  • Ошибки во время выполнения
  • Синтаксические ошибки
  • Ошибки компиляции
  • Ошибка переполнения
  • Ошибка перехвата VBA
  • Как игнорировать ошибку
  • VBA выдает ошибку / Err.Raise
  • Обработка ошибок VBA в цикле

✨ А прежде, чем мы начнем 📣 напомню, теперь у нас на канале есть удобный рубрикатор 👉 Быстрый поиск решения. Путеводитель по Excel, а все видео 📽 предыдущих уроков доступны и на YouTube.

Рекомендации по обработке ошибок VBA. Часть 2 Типы ошибок VBA
Рекомендации по обработке ошибок VBA. Часть 2 Типы ошибок VBA

☑️ Ошибки во время выполнения

Как мы рассматривали ранее:

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

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

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

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

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

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

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

-3

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

-4

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

-5

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

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

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

см. подробнее: Ошибка компиляции VBA

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

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

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

-6

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

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

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

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

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

-8

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

-9

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

-10

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

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

-11

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

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

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

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

-12

Решение:

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

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

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

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

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

🔘 On Error Resume Next

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

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

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

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

🔘 Err.Raise (13)

-13

☑️ Обработка ошибок VBA в цикле

Лучший способ обработки ошибок в цикле - использовать On Error Resume Next вместе с Err.Number, чтобы определить, произошла ли ошибка (не забудьте использовать Err.Clear для устранения ошибки после каждого возникновения).

В приведенном ниже примере мы разделим два числа (столбец A на столбец B) и выведем результат в столбец C. Если произошла ошибка, результат будет равен 0:

-14

🔔 Для получения дополнительной информации об обработке ошибок VBA рекомендуем:

Добавьте описание
Добавьте описание
  • Ошибка 1004 VBA - ошибка, определяемая приложением или объектом
  • Несоответствие типа VBA (ошибка времени выполнения 13). Часть 1
  • Несоответствие типа VBA (ошибка времени выполнения 13). Часть 2. Исправляем ошибки
  • Как использовать VBA при возобновлении работы с ошибкой Next и при ошибке Goto 0
  • Ошибка компиляции VBA

А на этом сегодня все. 👏 Продолжение следует...

Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel. Следите за нашими новостями и вы узнаете больше о VBA и Excel в частности.

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

💝 А если у Вас пока нет вопросов, но вы дочитали данную статью до конца оставьте в комментариях просто смайлик 😉 (автору будет приятно)

И конечно же, за лайк 👍  и репост 🔁 данного поста благодарочка 💖 и респект 🤝 каждому!

Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel.
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel.