VBA при сообщениях об ошибках | 3 основных способа исправления ошибок

|

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

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

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

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

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

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

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

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

3 основных способа обработки ошибок в VBA

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

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

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

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

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

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

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

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

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

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

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

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

Note: Here “KCalculation” is the label name I had given, you can give your own label name without any space.

Now if I execute this line of code it will not jump to the next line rather it will jump to the label name I have entered i. e. “KCalcualtion”. Here it will ignore the error given by “I” and also it will not execute “j” calculation but straight away it jumps to “KCalcualtion”.

#3 – Print Error Number in VBA

At the end of the code, we can also print the error number in a separate message box. The following line of code will do this job.

Code:

Now I will run this code first message box will show the calculation results.

Click on OK, it will show one more message box to show the error number.

We go 11 as the result i. e. Division by Zero.

We can also get the error description instead of the number. We just need to change the code, below is the code.

VBA при ошибке

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

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

Пример № 1

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

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

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

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

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

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

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

Пример № 2

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

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

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

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

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

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

Пример № 3

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

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

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

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

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

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

Пример № 4

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

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

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

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

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

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

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

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

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

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

Источники:

https://ru. mcfairbanks. com/1790-vba-on-error

https://ru. photo-555.com/5486088-vba-on-error

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: