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

Ситуация:

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

Error Handling in Excel VBA

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

  1. Во-первых, мы объявляем два объекта Range. Мы называем объекты Диапазон ГСЧ и клетки.

Dim rng As Range, cell As Range
  1. Мы инициализируем объект ГСЧ Range с выбранным диапазоном.

Set rng = Selection
  1. Мы хотим, чтобы вычислить квадратный корень из каждой ячейки в случайно выбранном диапазоне (этот диапазон может быть любого размера). В Excel VBA, вы можете использовать для каждого следующего цикла для этого. Добавьте следующие строки кода:

For Each cell In rng

Next cell

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

Не забывайте ссылаться на эти имена в остальной части кода.

  1. Добавьте следующую строку кода в петлю.

On Error Resume Next
  1. Далее, вычислить квадратный корень из значения. В Excel VBA, можно использовать функцию SQR для этого. Добавьте следующую строку кода в петлю.

cell.Value = Sqr(cell.Value)
  1. Закройте редактор Visual Basic и протестировать программу.

Результат:

On Error Resume Next Result

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

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

  1. Та же программа, как квадратный корень 1, но заменить «On Error Resume Next» с:

On Error GoTo InvalidValue:

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

Не забывайте ссылаться на это имя в остальной части кода.

  1. Вне Для каждого следующего цикла, сначала добавьте следующую строку кода:

Exit Sub

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

InvalidValue:
  1. Мы сохраняем код ошибки простые сейчас. Мы отобразить MsgBox с текстом и адресом ячейки, где произошла ошибка.

MsgBox "can't calculate square root at cell " & cell.Address
  1. Добавьте следующую строку в проинструктировать Excel VBA, чтобы возобновить выполнение после выполнения кода ошибки.

Resume Next
  1. Закройте редактор Visual Basic и протестировать программу.

Результат:

On Error GoTo Result

On Error GoTo Result

On Error GoTo Result