Обработка ошибок в Excel VBA
Ниже мы рассмотрим две программы в Excel VBA. Одна программа просто игнорирует ошибки. Другая программа продолжает выполнение заданной линии при ударе об ошибке.
Ситуация:
Обе программы вычислить квадратный корень из числа.
Квадратный корень 1 Добавьте следующие строки кода к кнопке «Квадратный корень 1» команды.
-
Во-первых, мы объявляем два объекта Range. Мы называем объекты Диапазон ГСЧ и клетки.
Dim rng As Range, cell As Range
-
Мы инициализируем объект ГСЧ Range с выбранным диапазоном.
Set rng = Selection
-
Мы хотим, чтобы вычислить квадратный корень из каждой ячейки в случайно выбранном диапазоне (этот диапазон может быть любого размера). В Excel VBA, вы можете использовать для каждого следующего цикла для этого. Добавьте следующие строки кода:
For Each cell In rng Next cell
Примечание: RNG и клетки случайным образом выбраны здесь, вы можете использовать любые имена.
Не забывайте ссылаться на эти имена в остальной части кода.
-
Добавьте следующую строку кода в петлю.
On Error Resume Next
-
Далее, вычислить квадратный корень из значения. В Excel VBA, можно использовать функцию SQR для этого. Добавьте следующую строку кода в петлю.
cell.Value = Sqr(cell.Value)
-
Закройте редактор Visual Basic и протестировать программу.
Результат:
Вывод: Excel VBA игнорирует ячейки, содержащие недопустимые значения, такие как отрицательные числа и текст. Без использования «On Error Resume Next» заявления вы получите две ошибки. Будьте осторожны, чтобы использовать только «On Error Resume Next» заявление, когда вы уверены, игнорируя ошибки в порядке.
Квадратный корень 2 Добавьте следующие строки кода к кнопке «Квадратный корень 2» команды.
-
Та же программа, как квадратный корень 1, но заменить «On Error Resume Next» с:
On Error GoTo InvalidValue:
Примечание: InvalidValue случайным образом выбирается здесь, вы можете использовать любое имя.
Не забывайте ссылаться на это имя в остальной части кода.
-
Вне Для каждого следующего цикла, сначала добавьте следующую строку кода:
Exit Sub
Без этой линии, остальная часть кода (код ошибки) будет выполняться, даже если нет никакой ошибки! 3. Excel VBA продолжает выполняться в строке, начиная с «InvalidValue:» при ударе об ошибке (не забудьте двоеточие). Добавьте следующую строку кода:
InvalidValue:
-
Мы сохраняем код ошибки простые сейчас. Мы отобразить MsgBox с текстом и адресом ячейки, где произошла ошибка.
MsgBox "can't calculate square root at cell " & cell.Address
-
Добавьте следующую строку в проинструктировать Excel VBA, чтобы возобновить выполнение после выполнения кода ошибки.
Resume Next
-
Закройте редактор Visual Basic и протестировать программу.
Результат: