Як визначити та обробити кожну можливу помилку в Excel 2016? Часто ви не можете. На щастя, VBA надає інший спосіб боротьби з цими неприємними помилками.
Перегляд процедури EnterSquareRoot
Перевірте наступний код. Підпрограма використовує універсальний оператор On Error, щоб уловити всі помилки, а потім перевірити, чи було скасовано InputBox.
Sub EnterSquareRoot5()
Dim Num як варіант
Приглушити повідомлення як рядок
' Налаштуйте обробку помилок
Помилка GoTo BadEntry
' Запросити значення
Num = InputBox ("Введіть значення")
' Вийдіть, якщо скасовано
Якщо Num = ““ Вийдіть із Sub
' Вставте квадратний корінь
ActiveCell.Value = Sqr(Num)
Вийти з суб
BadEntry:
Повідомлення = «Сталася помилка». & vbNewLine & vbNewLine
Msg = Msg & «Переконайтеся, що вибрано діапазон»,
Msg = Msg & «аркуш не захищений»,
Msg = Msg & «і ви вводите невід’ємне значення».
MsgBox Msg, vbCritical
Кінець суб
Ця процедура затримує будь-які типи помилок під час виконання. Після перехоплення помилки під час виконання переглянута процедура EnterSquareRoot відображає це вікно повідомлення. У цьому вікні повідомлення описано найбільш ймовірні причини помилки.
Помилка під час виконання процедури генерує це напівкорисне повідомлення про помилку.
На Помилка не працює?
Якщо оператор On Error не працює так, як рекламується, вам потрібно змінити одне зі своїх налаштувань:
Активуйте VBE.
Виберіть команду Інструменти → Параметри.
Перейдіть на вкладку «Загальні» діалогового вікна «Параметри».
Переконайтеся, що параметр Розрив на всіх помилках знятий.
Якщо вибрано цей параметр, Excel по суті ігнорує будь-які інструкції On Error. Зазвичай ви хочете, щоб параметри перехоплення помилок були встановлені на Розрив при необроблених помилках.
Про твердження On Error
Використання оператора On Error у вашому коді VBA дозволяє обійти вбудовану обробку помилок Excel і використовувати власний код обробки помилок. У попередньому прикладі помилка під час виконання призводить до того, що виконання макросу переходить до оператора з позначкою BadEntry. В результаті ви уникнете недружніх повідомлень про помилки Excel і зможете відображати власне повідомлення користувачеві.
Зверніть увагу, що в прикладі використовується оператор Exit Sub безпосередньо перед міткою BadEntry. Цей оператор необхідний, оскільки ви не хочете виконувати код обробки помилок, якщо помилка не виникає.