VBA при ошибке

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

Как использовать Excel VBA при заявлении об ошибке в Excel?

Есть 3 способа ошибки в VBA. Давайте разберемся по-разному с некоторыми примерами.

Пример № 1

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

Теперь откройте Подкатегорию и добавьте любое имя. Как мы используем On Error, так мы назвали как то же самое.

 Sub OnError () End Sub 

Теперь определите любые 2 или 3 целых числа. Здесь мы принимаем X и Y как целые числа.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число End Sub 

Теперь, как обсуждалось выше, мы вычислим математическое выражение деления. Для X мы поместим символ в Numerator и разделим его на 0. И Y будет 20/2, что является полными числами.

 Sub OnError () Dim X As Integer, Y As Integer X = Test / 0 Y = 20/2 End Sub 

Теперь запустите код, используя клавишу F5 или нажав на кнопку воспроизведения, как показано ниже. Мы получим ошибку времени выполнения 6, которая показывает текст поверх ошибки.

Теперь, чтобы устранить эту ошибку, мы добавим одну строку On Error Resume Next, прежде чем писать математический код. Он перескочит код ошибки, но мы не сможем увидеть результат второго математического кода. Это только скрывает сообщение об ошибке, если различные строки кода, как показано ниже. Теперь попробуйте запустить код.

 Sub OnError () Dim X As Integer, Y As Integer On Error Возобновить Далее X = Test / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Теперь, чтобы устранить эту ошибку, мы добавим одну строку On Error Resume Next, прежде чем писать математический код. Он перескочит код ошибки, но мы не сможем увидеть результат второго математического кода. Это только скрывает сообщение об ошибке, если различные строки кода, как показано ниже. Теперь попробуйте запустить код.

Пример № 2

В этом примере мы рассмотрим математическое деление, которое дает бесконечный результат, но при кодировании оно будет # DIV / 0 result. Чтобы продемонстрировать это, мы рассмотрим еще одно целое число Z вместе с X и Y в подкатегории, как показано ниже.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число End Sub 

Теперь поместите все целые числа X, Y и Z в математическое выражение деления и выведите его, используя функцию MsgBox в VBA для каждого результата целого числа.

Ниже для Integer X мы разделили 10 на 0, 20 на 2 и 30 на 4.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Теперь запустите код, используя клавишу F5 или вручную, как показано ниже.

Как мы видим на скриншоте выше, ошибка времени выполнения 11 означает, что ошибка связана с числом. Теперь, чтобы преодолеть это, добавьте одну строку On Error Resume Next перед математическим выражением, как показано ниже.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число при ошибке Возобновить Далее X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Теперь, если мы запустим код, мы получим ноль для первого целого числа X, а для Y и Z мы получим соответствующие ответы деления, как показано ниже.

Пример № 3

Второй тип ошибки виден, когда мы вводим неправильный ввод данных в коде. Для этого мы рассмотрим 3 целых числа X, Y и Z, открыв подкатегорию в VBA, как показано ниже.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число End Sub 

Теперь также рассмотрим то же математическое деление, которое мы видели в приведенном выше примере.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Если мы запустим код, мы получим то же сообщение об ошибке Run-time error 11.

Теперь, чтобы отменить эту ошибку, используйте текст On Error GoTo со словом «« Результат, чтобы пропустить сообщение об ошибке и получить вывод, который работает нормально, как показано ниже.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число при ошибке GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

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

В случае ошибки GoTo ZResult помогает нам напрямую переходить к целому числу указанной результирующей точки, как мы делали для целого числа Z.

Пример № 4

В третьем типе ошибки, когда мы запускаем код и VBA не в состоянии понять строку кода. Это можно сделать с помощью кода On Error Resume Next вместе с MsgBox Err.Number . Рассмотрим те же данные, что и в приведенных выше примерах. Мы снова увидим те же 3 целых числа X, Y и Z, как показано ниже.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число End Sub 

А для печати результатов вывода разрешите вывод сообщений для всех целых чисел.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Теперь, если мы запустим полный код, то получим сообщение об ошибке математической ошибки Run time error 11.

Теперь, чтобы устранить эту ошибку, мы будем использовать On Error Resume Next.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число при ошибке Возобновить Далее X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

И запустить код. Это даст результат использования действительной математической строки, как показано ниже.

Теперь дополнительно добавьте строку кода ZResult перед математическим выражением Z-целочисленного деления и добавьте строку кода MsgBox Err.Number в конце кода, как показано ниже.

 Sub OnError () Dim X как целое число, Y как целое число, Z как целое число при ошибке Возобновить Далее X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub 

Теперь запустите код, используя клавишу F5 или нажав кнопку воспроизведения, как показано ниже.

Как мы можем видеть на скриншотах выше. Первое окно сообщения имеет 0, что является неправильным математическим выражением. 2- й и 3- й имеют результат деления целых чисел Y и Z. И последнее окно сообщения имеет код ошибки времени выполнения 11, который, вероятно, является кодом ошибки выражений деления из X целых чисел.

Плюсы VBA при ошибке

  • Мы можем рассчитать любую математическую формулу, даже если она неверна.
  • Для больших структур кодирования, где есть вероятность или есть ошибка, использование этих методов может дать правильный результат даже среди строки кодов.
  • Это дает лучший результат по сравнению с результатом, полученным из обычных расчетов Excel.

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

  • Всегда сохраняйте файл в файле Macro-Enabled Excel, чтобы мы могли использовать созданный код VBA многократно.
  • Всегда компилируйте написанный код перед реализацией с любым требованием Excel.
  • При необходимости назначьте написанный код любой кнопке, чтобы мы могли быстро нажать на кнопку и запустить код.

Вы можете скачать этот шаблон VBA при ошибке Excel здесь - VBA при ошибке шаблон Excel

Рекомендуемые статьи

Это руководство по Excel VBA при ошибке. Здесь мы обсудили, как использовать VBA On Error Statement вместе с некоторыми практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. Как использовать функцию VBA TRIM?
  2. Числовой формат в VBA
  3. Руководство по Excel VBA Do While Loop
  4. Как использовать функцию поиска VBA?

Категория: