Обробка помилок VBA в Excel

Поводження з помилками - це дуже корисний та важливий механізм для мов програмування, таких як VBA. Контроль або попередження помилок - це аспект обробки помилок, який означає вжиття ефективних та значних заходів всередині сценарію VBA, щоб уникнути появи спливаючих повідомлень про помилки

Різні типи помилок у VBA

  1. Помилка синтаксису або помилка розбору
  2. Помилка компіляції або компіляції
  3. Помилка виконання
  4. Логічна помилка

Вищезазначені помилки можна виправити за допомогою нижчезазначеної налагодження та різних заяв "Про помилку", вставлених між кодом.

Про помилку Відновіть далі

On Error Goto 0

Помилка Goto

Помилка Goto -1

Поводження з помилками VBA за допомогою різних заяв "ПРО ПОМИЛКУ"

Ви можете завантажити цей шаблон обробки файлів Excel з помилками VBA тут - VBA Поводження з помилками Excel Шаблон

Приклад №1 - Помилки компіляції VBA

Якщо в заяві або синтаксисі коду VBA є помилка, коли ви помилково вводите код, він буде виділятися червоним кольором залежно від параметрів налаштування в інструментах (Якщо ви вибрали автоматичну перевірку синтаксису).

Вікно спливаючого повідомлення про помилку компіляції з’явиться, коли ви запустите код з неправильним синтаксисом.

Код:

 Sub SYNTAX_ERROR () MsgBox - це моя перша програма End Sub 

"ПОМИЛКА КОМПЛІЄЦІ: ЗМІННО НЕ ВИЗНАЧЕНО" - це найпоширеніша помилка, яка з'являється у вигляді спливаючого повідомлення. коли змінна посилання не визначена, виникає ця помилка.

Код:

 Sub VBA_FORMAT1 () A = 19049, 83 A = Формат (A, "СТАНДАРТ") MsgBox A Кінець 

У наведеному вище прикладі я не оголосив тип змінної як String, тому ця помилка виникає. Отже, мені потрібно оголосити змінну як Dim A As String.

Код:

 Sub VBA_FORMAT1 () Dim A As String A = 19049.83 A = Формат (A, "СТАНДАРТ") MsgBox A End Sub 

Приклад №2 - Помилка виконання VBA

Коли неможливі математичні висловлювання або терміни, присутні у виписці, виникає ця помилка виконання.

Код:

 Sub RUNTIME_1 () MsgBox 6/0 Закінчення Sub 

Приклад №3 - Логічні помилки або помилки VBA

Ці помилки дуже важко відстежувати, не виділяються і не з’являється спливаюче повідомлення про помилку. це призведе до несподіваних дій та неправильних результатів.

Приклад: Коли в коді присутні дві змінні, вона може містити неправильну. У цьому випадку виникає логічна помилка.

Як запобігти помилкам у VBA?

Давайте перевіримо, як запобігти вищезазначеним різним типам помилок у VBA Excel.

Крок 1: Відкрити вікно редактора VB Виберіть або натисніть на Visual Basic у групі Код на вкладці Developer, або ви можете безпосередньо натиснути клавішу клавіш Alt + F11 .

Крок 2. Щоб створити порожній модуль, під об’єктами Microsoft excel клацніть правою кнопкою миші на аркуші 1 (VB_ERROR HANDLING) та Вставте модуль, щоб створився новий порожній модуль.

Обробка помилок VBA з можливістю налагодження

Краще зібрати код, перш ніж ми запустимо його. Щоб скласти компіляцію, необхідно виконати наступні кроки. На панелі інструментів меню VB під опцією «Налагодження» нам потрібно вибрати компільований проект VBA. Після натискання на нього він перевіряє код покроково, як тільки виявить помилку, він виділить його та з’явиться спливаюче повідомлення, тим самим вам потрібно його виправити. Після її виправлення вам потрібно скласти, щоб знайти наступну помилку в коді.

Примітка. За допомогою параметра компіляції ми можемо виправити лише помилку компіляції та синтаксису.

Поводження з помилками VBA за допомогою різних заяв "ПРО ПОМИЛКУ"

1. On Error Resume Next

Тут помилка буде проігнорована, і код рухатиметься далі.

У наведеному нижче прикладі 6 не може бути розділений на нуль, якщо ви запускаєте його, не вводячи оператор On Error Resume Next, тоді виникає нижченаведена помилка виконання.

Код:

 Sub RUNTIME_1 () MsgBox 6/0 Закінчення Sub 

Якщо On Error Resume Next введено у верхній частині коду після оператора Sub, він ігнорує помилку виконання та переходить до наступного оператора, що призводить до виходу 6/2, тобто 3 (вікно повідомлення спливаючого вікна з результатом його).

Код:

 Sub RUNTIME_2 () Про помилку Відновлення Далі MsgBox 6/0 MsgBox 6/2 End Sub 

2. On Error GoTo 0 та Error GoTo -1

'On Error GoTo 0' зупинить код у певному рядку, що спричиняє помилку, та покаже поле повідомлення, яке описує або вказує на помилку.

Код:

 Sub onError_Go_to_0 () On Error GoTo 0 Kill "C: TempFile.exe" Діапазон ("A1"). Значення = 100 / "PETER" End Sub 

Зазвичай він демонструє поведінку перевірки помилок за замовчуванням, це важливо, коли він використовується разом із "On Error Resume Next".

Зазвичай ви можете спостерігати за полем Повідомлення про помилки під час виконання, містить параметри "Продовжити", "Кінець", "Налагодження" та "Довідка" . давайте перевіримо використання кожного з них.

  • Опція " Продовжити " буде ігнорувати виняток і продовжить код, якщо це можливо.
  • Кінцевий варіант припиняє програму.
  • Опція налагодження підкреслить оператор, де сталася помилка. що допоможе вам налагодити чи виправити код.
  • Опція довідки допоможе вам відкрити сторінку довідки Microsoft MSDN.

On Error GoTo 0 з On Error Відновити далі

Код:

 Sub onError_Go_to_0_with_Resume_next () Про помилку Відновлення Наступне вбивство "C: TempFile.exe" Помилка GoTo 0 Діапазон ("A1"). Значення = 100 / "PETER" Кінець Під 

У наведеному вище коді він буде ігнорувати помилки, поки не дійде до оператора On Error GoTo 0. Після операції On Error GoTo 0 код повертається назад або переходить до звичайної перевірки помилок і запускає очікувану помилку вперед. коли я запускаю вищевказаний код, він покаже помилку поділу, тобто невідповідність типу (числове значення не можна розділити на текст).

On Error GoTo 0 вимикає будь-яке захоплення помилок, яке зараз присутнє у коді VBA, тобто вимикає обробку помилок у головному коді, тоді як On Error GoTo -1 очищує обробку помилок і встановлює її ні до чого, що допомагає або дозволяє створити іншу пастку помилок.

3. Помилка GoTo <LABEL

VBA для передачі керування програмою на рядок з наступною міткою, якщо виникають помилки виконання, тобто код переходить на вказану мітку. Тут оператори коду між рядком винятку та міткою не виконуватимуться.

Цей метод є більш підходящим та значущим для виходу програми з програми, якщо під час виконання виникає якась велика фатальна помилка.

У наведеному нижче коді VBA, як тільки помилка трапляється в рядку 3, програма передає керування на рядок 6, тобто мітку (спливаюче повідомлення з'являється як "Обробник винятків" ).

Код:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Цей рядок не буде виконано" Exit Sub Error_handler: MsgBox "обробник винятків" End Sub 

Тут ви можете помітити, що "Вихід із суб" слід використовувати безпосередньо перед міткою "Помилка_хандлер:", це робиться для того, щоб блок коду обробника помилок зупинився або не виконався, якщо помилки не буде. Тепер ви можете зберегти свою робочу книгу як "робочу книжку з підтримкою макросу Excel". Клацнувши кнопку "Зберегти", як у лівому куті робочого аркуша.

Якщо ви знову відкриєте файл, ви можете натиснути клавішу швидкого доступу, тобто Fn + Alt + f8, з'явиться діалогове вікно "Макрос", де ви можете запустити збережений макрокод на ваш вибір або натиснути на Fn + Alt + F11 для повне вікно макросу

Що потрібно пам’ятати

  • Перш ніж писати код, ви повинні переконатися, що перерва на необроблені помилки перевіряється або вибирається помилково. опція лову під загальним в параметрах інструмента панелі інструментів VBA.
  • Це налаштування за замовчуванням, яке допомагає зупинити ваш код на помилки, які не обробляються.
  • Перерва на всі помилки: він зупинить ваш код на всіх типах помилок.
  • Модуль класу розбиття: Якщо в коді використовується такий об'єкт, як форма користувача, він підкреслить, що точний рядок викликає помилку.

Рекомендовані статті

Це посібник по роботі з помилками VBA. Тут ми обговорюємо, як використовувати обробку помилок VBA в Excel разом з деякими практичними прикладами та шаблоном Excel, який можна завантажити. Ви також можете ознайомитися з іншими запропонованими нами статтями -

  1. VBA оголосити масив (приклади)
  2. Помилка VBA
  3. Аркуш незахищеної VBA
  4. Стовпці VBA | Шаблони Excel
  5. VBA Environment

Категорія: