Як використовувати оператор OnError в Excel 2016 VBA

Якщо вам потрібно впоратися з помилками в Excel VBA, ви можете використовувати оператор OnError. Однак є кілька речей, які вам потрібно знати в першу чергу. Ви можете використовувати оператор On Error трьома способами.

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

Відновлення після помилки

У деяких випадках ви просто хочете, щоб підпрограма закінчилася витончено, коли виникає помилка. Наприклад, ви можете відобразити повідомлення з описом помилки, а потім вийти з процедури. (У прикладі EnterSquareRoot5, показаному раніше, використовується цей прийом.) В інших випадках, якщо можливо, потрібно відновити помилку.

Щоб відновитися після помилки, необхідно використовувати оператор Resume. Це очищає умову помилки та дозволяє продовжити виконання в певному місці. Ви можете використовувати оператор Resume трьома способами.

Синтаксис Що воно робить
Резюме Виконання відновлюється з оператором, який спричинив помилку. Використовуйте
це, якщо ваш код обробки помилок виправляє проблему і
можна продовжити.
Резюме Далі Виконання поновлюється з оператором, який слідує відразу за
оператором, який спричинив помилку. Це по суті ігнорує
помилку.
Мітка резюме Виконання відновиться за вказаною вами міткою .

У наступному прикладі використовується оператор Resume після виникнення помилки:

Sub EnterSquareRoot6()
  Dim Num як варіант
  Приглушити повідомлення як рядок
  Dim Ans як ціле число
Спробуйте ще раз:
' Налаштуйте обробку помилок
  Помилка GoTo BadEntry
' Запросити значення
  Num = InputBox ("Введіть значення")
  Якщо Num = ““ Вийдіть із Sub
' Вставте квадратний корінь
  ActiveCell.Value = Sqr(Num)
  Вийти з суб
BadEntry:
  Msg = Err.Number & “: “ & Error(Err.Number)
  Повідомлення = Msg & vbNewLine & vbNewLine
  Msg = Msg & «Переконайтеся, що вибрано діапазон»,
  Msg = Msg & «аркуш не захищений»,
  Msg = Msg & «і ви вводите невід’ємне значення».
  Msg = Msg & vbNewLine & vbNewLine & «Спробувати ще раз?»
  Ans = MsgBox(Msg, vbYesNo + vbCritical)
  Якщо Ans = vbYes, то продовжити спробу ще раз
Кінець суб

Ця процедура має іншу мітку: TryAgain. Якщо виникає помилка, виконання продовжується за міткою BadEntry, а код відображає повідомлення нижче. Якщо користувач відповідає, натиснувши Так, запускається оператор Resume, і виконання повертається до мітки TryAgain. Якщо користувач натисне «Ні», процедура завершується.

Як використовувати оператор OnError в Excel 2016 VBA

Якщо виникає помилка, користувач може вирішити, чи спробувати ще раз.

Зверніть увагу, що повідомлення про помилку також містить номер помилки разом із «офіційним» описом помилки.

Оператор Resume очищає умову помилки перед продовженням. Щоб побачити це, спробуйте замінити наведений нижче оператор передостаннього оператора в попередньому прикладі:

Якщо Ans = vbYes, то перейдіть до TryAgain

Код не працює належним чином, якщо ви використовуєте GoTo, а не Resume. Для демонстрації введіть від’ємне число. Ви отримуєте підказку про помилку. Натисніть Так, щоб спробувати ще раз, а потім введіть інше від’ємне число. Ця друга помилка не зафіксована, оскільки початкова умова помилки не була очищена.

Коротко обробка помилок

Щоб допомогти вам утримувати всі ці справи з обробкою помилок, ось коротке резюме. Блок коду обробки помилок має такі характеристики:

  • Він починається відразу після мітки, зазначеної в операторі On Error.

  • Його має досягти ваш макрос, лише якщо виникає помилка. Це означає, що ви повинні використовувати такий оператор, як Exit Sub або Exit Function, безпосередньо перед міткою.

  • Для цього може знадобитися заява про резюме. Якщо ви вирішили не переривати процедуру при виникненні помилки, ви повинні виконати оператор Resume, перш ніж повернутися до основного коду.

Знати, коли ігнорувати помилки

У деяких випадках ігнорувати помилки цілком нормально. Саме тоді вступає в дію оператор On Error Resume Next.

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

Sub SelectionSqrt()
  Яскрава комірка як діапазон
  Якщо TypeName(Selection) <> «Діапазон», то вийдіть із Sub
  Для кожної клітинки у виділенні
    cell.Value = Sqr(cell.Value)
  Наступна клітинка
Кінець суб

У цьому випадку ви можете просто пропустити будь-яку клітинку, яка містить значення, яке ви не можете перетворити на квадратний корінь. Ви можете створити всілякі можливості перевірки помилок за допомогою структур If-Then, але ви можете придумати краще (і простіше) рішення, просто ігноруючи помилки, що виникають.

Наступна підпрограма досягає цього за допомогою оператора On Error Resume Next:

Sub SelectionSqrt()
  Яскрава комірка як діапазон
  Якщо TypeName(Selection) <> «Діапазон», то вийдіть із Sub
  Помилка Продовжити далі
  Для кожної клітинки у виділенні
    cell.Value = Sqr(cell.Value)
  Наступна клітинка
Кінець суб

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

Leave a Comment

Як спілкуватися в чаті в Outlook Web App

Як спілкуватися в чаті в Outlook Web App

Досліджуйте, як ефективно спілкуватися в чаті з колегами в Outlook Web App. Дізнайтеся про покрокову інструкцію та нові можливості для підвищення продуктивності.

Як заборонити Microsoft Word відкривати файли в режимі лише для читання в Windows

Як заборонити Microsoft Word відкривати файли в режимі лише для читання в Windows

Як заборонити Microsoft Word відкривати файли в режимі лише для читання в Windows. Microsoft Word відкриває файли в режимі лише для читання, що робить неможливим їх редагування? Не хвилюйтеся, методи наведено нижче

Як виправити неправильний друк документів Microsoft Word

Як виправити неправильний друк документів Microsoft Word

Як виправити помилки під час друку неправильних документів Microsoft Word Помилки під час друку документів Word зі зміненими шрифтами, безладними абзацами, відсутнім текстом або втраченим вмістом є досить поширеними. Однак не варто

Зітріть малюнки ручкою та маркером на слайдах PowerPoint

Зітріть малюнки ручкою та маркером на слайдах PowerPoint

Якщо ви використовували перо або маркер для малювання на слайдах PowerPoint під час презентації, ви можете зберегти малюнки для наступної презентації або стерти їх, щоб наступного разу, коли ви показуватимете їх, розпочали з чистих слайдів PowerPoint. Дотримуйтесь цих інструкцій, щоб стерти малюнки пером і маркером: Стирання рядків на одній з […]

Вміст бібліотеки стилів у SharePoint 2010

Вміст бібліотеки стилів у SharePoint 2010

Бібліотека стилів містить файли CSS, файли мови розширюваної мови таблиць стилів (XSL) та зображення, які використовуються попередньо визначеними основними сторінками, макетами сторінок та елементами керування в SharePoint 2010. Щоб знайти файли CSS у бібліотеці стилів сайту видавництва: виберіть «Дії сайту»→ «Перегляд». Весь вміст сайту. З’являється вміст сайту. Бібліотека Style знаходиться в […]

Форматуйте числа в тисячах і мільйонах у звітах Excel

Форматуйте числа в тисячах і мільйонах у звітах Excel

Не перевантажуйте аудиторію гігантськими цифрами. У Microsoft Excel ви можете покращити читабельність своїх інформаційних панелей і звітів, відформатувавши числа, щоб вони відображалися в тисячах або мільйонах.

Як ділитися сайтами SharePoint і слідкувати за ними

Як ділитися сайтами SharePoint і слідкувати за ними

Дізнайтеся, як використовувати інструменти соціальних мереж SharePoint, які дозволяють особам і групам спілкуватися, співпрацювати, обмінюватися інформацією та спілкуватися.

Як перетворити дати в юліанські формати в Excel

Як перетворити дати в юліанські формати в Excel

Юліанські дати часто використовуються у виробничих середовищах як мітка часу та швидкий довідник для номера партії. Цей тип кодування дати дозволяє роздрібним продавцям, споживачам та агентам з обслуговування визначити, коли був виготовлений продукт, а отже, і вік продукту. Юліанські дати також використовуються в програмуванні, військовій справі та астрономії. Інший […]

Як створити веб-програму Access

Як створити веб-програму Access

Ви можете створити веб-програму в Access 2016. Так що ж таке веб-програма? Ну, веб означає, що він онлайн, а додаток — це просто скорочення від «додаток». Користувацька веб-програма — це онлайн-додаток для баз даних, доступ до якого здійснюється з хмари за допомогою браузера. Ви створюєте та підтримуєте веб-програму у настільній версії […]

Панель швидкого запуску в SharePoint 2010

Панель швидкого запуску в SharePoint 2010

Більшість сторінок у SharePoint 2010 відображають список посилань навігації на панелі швидкого запуску ліворуч. Панель швидкого запуску відображає посилання на пропонований вміст сайту, наприклад списки, бібліотеки, сайти та сторінки публікації. Панель швидкого запуску містить два дуже важливі посилання: Посилання на весь вміст сайту: […]