VBA при ошибке

Excel VBA об ошибке

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

Предвидение ошибки в коде делает вас профессионалом в кодировании VBA. Вы не можете сделать код эффективным на 100%. Даже если вы так или иначе уверены в своем коде, он может выдать ошибку.

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

Что такое ошибка?

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

Например, если вы попытаетесь удалить лист, которого там нет, то, очевидно, мы не сможем выполнить эту строку кода.

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

Но у нас есть инструкция в VBA для обработки всех этих видов ошибок, т. е. инструкция «При ошибке».

VBA при ошибке

Вы можете использовать это изображение на своем веб-сайте, в шаблонах и т. д. Пожалуйста, предоставьте нам ссылку на авторствоКак предоставить атрибуцию?Ссылка на статью должна быть гиперссылкой
Например:
Источник: VBA при ошибке (wallstreetmojo.com)

Типы сообщений об ошибках

Ключевым моментом обработки ошибок в VBA является оператор «On Error». Например, при ошибке, «возобновить следующую строку», «перейти или перейти на другую строку» и т. д.…

Оператор On Error имеет три типа операторов.

  1. Перейти к 0 означает, что всякий раз, когда возникает ошибка времени выполнения, Excel или VBA должны отображать окно сообщения об ошибке, в котором указывается тип возникшей ошибки. Как только VBA выполняет код, он отключает все обработчики ошибок в этом конкретном блоке кода.
  2. Возобновить Далее означает, что всякий раз, когда возникает ошибка, этот оператор указывает Excel игнорировать эту ошибку и переходить (возобновить следующую) к следующей строке кода без отображения каких-либо сообщений об ошибках. Это не означает, что это исправит ошибку; скорее, он просто игнорирует ошибку.
  3. Перейти к [label] означает, что всякий раз, когда VBA обнаруживает ошибку, переходите к назначенной метке. Это заставляет код переходить к определенной строке, предоставленной кодером.

3 лучших способа обработки ошибок в VBA

Вы можете скачать этот шаблон VBA On Error здесь — VBA в шаблоне ошибки

# 1 — При ошибке возобновить дальше

Предположим, вы делите значение 20 на 0, и вы объявили переменную для присвоения ей результата деления.

Код:

Sub OnError_Example1()

Dim i As Integer

i = 20 / 0

End Sub
Пример ошибки 1

Если вы запустите этот код, он выдаст следующую ошибку.

Пример ошибки 1-1

Таким образом, вы не можете делить любое число на нулевое значение. Номер ошибки времени выполнения — 11, т. е. деление на ноль.

Теперь я добавлю еще одну строчку в код.

Код:

Sub OnError_Example1()

Dim i As Integer, j As Integer

i = 20 / 0

j = 20 / 2

End Sub
Пример приложения Visual Basic 1-2

Теперь я добавлю заявление о возобновлении ошибки вверху.

Код:

Sub OnError_Example1()

Dim i As Integer, j As Integer

On Error Resume Next

i = 20 / 0

j = 20 / 2

End Sub
Пример ошибки 1-3

Теперь, если я выполню этот код, он не выдаст мне никаких сообщений об ошибках; скорее, он выполнит следующую строку кода, т. е. j = 20/2.

# 2 — При ошибке Перейти к метке

Я объявил три переменные.

Код:

Sub OnError_Example1()
Dim i As Integer, j As Integer, k As Integer
Пример ошибки 1-4

Для всех этих трех переменных я назначу расчет деления.

Код:

Sub OnError_Example1()

Dim i As Integer, j As Integer, k As Integer

i = 20 / 0

j = 20 / 2

k = 10 / 5
Пример приложения Visual Basic 1-5

Результат всех этих трех вычислений будет показан в окне сообщения.

Код:

Sub OnError_Example1()

Dim i As Integer, j As Integer, k As Integer

i = 20 / 0

j = 20 / 2

k = 10 / 5

MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _
vbNewLine & "The value of k is " & k & vbNewLine

End Sub
Пример ошибки 1-6

Теперь я попытаюсь выполнить этот код, так как расчет «I» неправильный. Мы получим ошибку времени выполнения 11.

Пример ошибки 1-7

Теперь я добавлю оператор «При ошибке возобновить дальше».

Код:

Sub OnError_Example1()

Dim i As Integer, j As Integer, k As Integer

On Error Resume Next

i = 20 / 0

j = 20 / 2

k = 10 / 5

MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _
vbNewLine & "The value of k is " & k & vbNewLine

End Sub
Visual Basic Резюме Далее 1-8

Если я выполню это, он пропустит вычисление «I» и выполнит оставшиеся два вычисления, и результат будет следующим.

Пример ошибки 1-9

Теперь вместо «При ошибке возобновить далее» я добавлю «При ошибке перейти к KCalculation».

Код:

Sub OnError_Example1()

Dim i As Integer, j As Integer, k As Integer

On Error GoTo KCalculation:

i = 20 / 0

j = 20 / 2

KCalculation:
k = 10 / 5

MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _
vbNewLine & "The value of k is " & k & vbNewLine

End Sub
VBA при ошибке Пример 1-10
Примечание: Здесь «KCalculation» — это имя метки, которое я дал; вы можете указать свое имя ярлыка без пробела.

Теперь, если я выполню эту строку кода, она не перейдет к следующей строке. Вместо этого он перейдет к имени метки, которое я ввел, например, «KCalcualtion». Здесь он проигнорирует ошибку, указанную «I», а также не будет выполнять расчет «j», а сразу перейдет к «KCalcualtion».

# 3 — Распечатать номер ошибки в VBA

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

Код:

Err.Number
Ошибка печати приложения Visual Basic 1-11

Теперь я запущу этот код, первое окно сообщения покажет результаты расчета.

Выходные данные приложения Visual Basic 1–12

Нажмите «ОК». Появится еще одно окно сообщения, чтобы показать номер ошибки.

VBA при ошибке Пример 1-12

Идем 11; в результате, т. е. деление на ноль.

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

Код:

Err.Description
VBA при ошибке Пример 1-13

Это покажет описание, как это.

VBA при ошибке Пример 1-14

То, что нужно запомнить

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

УЗНАТЬ БОЛЬШЕ >>

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.