Обработка ошибок в Excel VBA - макросы Easy Excel

Содержание

Ниже мы рассмотрим две программы в Excel VBA. Одна программа просто игнорирует ошибки. Другая программа продолжает выполнение на указанной строке при обнаружении ошибки.

Ситуация:

Обе программы вычисляют квадратный корень из чисел.

Квадратный корень 1

Добавьте следующие строки кода к командной кнопке «Квадратный корень 1».

1. Сначала мы объявляем два объекта Range. Мы называем объекты Range rng и cell.

Dim rng As Range, cell as Range

2. Инициализируем объект Range rng выбранным диапазоном.

Установить rng = Выбор

3. Мы хотим вычислить квадратный корень из каждой ячейки в случайно выбранном диапазоне (этот диапазон может быть любого размера). В Excel VBA для этого можно использовать цикл For Each Next. Добавьте следующие строки кода:

Для каждой ячейки In rng
Следующая ячейка

Примечание: здесь случайным образом выбираются rng и ячейка, вы можете использовать любые имена. Не забудьте ссылаться на эти имена в остальной части кода.

4. Добавьте в цикл следующую строку кода.

При ошибке Возобновить Далее

5. Затем мы вычисляем квадратный корень из значения. В Excel VBA мы можем использовать для этого функцию Sqr. Добавьте в цикл следующую строку кода.

cell.Value = Sqr (cell.Value)

6. Закройте редактор Visual Basic и протестируйте программу.

Результат:

Вывод: Excel VBA проигнорировал ячейки, содержащие недопустимые значения, такие как отрицательные числа и текст. Без использования оператора «On Error Resume Next» вы получите две ошибки. Будьте осторожны и используйте оператор «On Error Resume Next» только в том случае, если вы уверены, что игнорировать ошибки - это нормально.

Квадратный корень 2

Добавьте следующие строки кода к командной кнопке «Квадратный корень 2».

1. Та же программа, что и квадратный корень 1, но вместо «При ошибке возобновить следующий» на:

При ошибке GoTo InvalidValue:

Примечание. Здесь случайным образом выбирается InvalidValue, вы можете использовать любое имя. Не забудьте ссылаться на это имя в остальной части кода.

2. За пределами цикла For Each Next сначала добавьте следующую строку кода:

Выйти из подводной лодки

Без этой строки будет выполнен остальной код (код ошибки), даже если ошибки нет!

3. Excel VBA продолжает выполнение со строки, начинающейся с InvalidValue: при обнаружении ошибки (не забывайте двоеточие). Добавьте следующую строку кода:

Неверное значение:

4. Пока мы сохраняем простой код ошибки. Мы отображаем MsgBox с некоторым текстом и адресом ячейки, в которой произошла ошибка.

MsgBox "не может вычислить квадратный корень из ячейки" & cell.Address

5. Добавьте следующую строку, чтобы указать Excel VBA возобновить выполнение после выполнения кода ошибки.

Продолжить Далее

6. Закройте редактор Visual Basic и протестируйте программу.

Результат:

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave