Ниже мы рассмотрим две программы в 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 и протестируйте программу.
Результат: