Вилов "диких" помилок за допомогою On Error та

Ця книга допоможе освоїти інтегроване середовище розробки VBA та навчитися програмувати у VBA з використання об'єктів, їх властивостей, методів та подій. Обговорювані прийоми програмування ілюструються прикладами, які можна відразу випробувати практично. Отримані знання ви зможете застосувати як для налаштування та вдосконалення популярних офісних програм, включаючи програми Office XP, так і для створення власних програм.
Книга розрахована на тих, хто збирається швидко та без зайвих зусиль навчитися програмувати для Windows, використовуючи VBA.
VBA для чайників
Вилов "диких" помилок за допомогою On Error та
Вилов "диких" помилок за допомогою On Error та
Якщо під час виконання програми щось йде не так, як потрібно, зазвичай на роботі програми це позначається катастрофічно. VBA припиняє виконання програми та виводить діалогове вікно з небагатослівним повідомленням про помилку виконання. Приклад такого повідомлення ви вже бачили на рис. 9.2. На вибір вам пропонується клацнути або на кнопці End (щоб завершити виконання програми), або на кнопці Debug (щоб перейти в режим паузи), або на кнопці Help (щоб відобразити на екрані розділ довідки, що відповідає вашій програмі помилці).
Жодна з цих пропозицій не виглядає цілком задовільною, особливо при виконанні програми в процесі експлуатації, а не налагодження. Менш дратівливою виявляється ситуація, коли ваша програма може сама розпізнати помилку і виправити або принаймні м'яко обійти її перш ніж VBA вискочить зі своїм грубим повідомленням про помилку. А якщо зробити це не можна, то непогано хоча б обдарувати користувача трохи дружелюбнішим повідомленням з цього приводу.
Все це можна реалізувати, але дляцього вам доведеться додати до програми свій власний обробник помилок. Про те, як це зробити, і йтиметься в цьому розділі.
Як я вже згадував – але повторюю тут, оскільки це було надто давно, – поява помилок виконання обумовлюється наступними двома причинами.
* Виникнення непередбаченого збігу обставин, що не дозволяє програмі продовжити роботу. Наприклад, розрив з'єднання з базою даних, мережевим сервером чи сторінкою Internet може дозволити програмі отримати необхідних її роботи значення.
Але незалежно від причин, вихід один - організація захисту програми та користувача за допомогою створення програмного обробника помилок.
Щоб VBA у відсутності справи з помилками виконання, а взяти турботу про них він, процедури потрібно забезпечити обробником помилок - блоком програмного коду, виконуваним лише тоді, коли відбувається помилка. Якщо при виконанні процедури щось піде не так, VBA викличе цей обробник помилок, щоб у ньому з'ясувати, якого типу помилка сталася, і в залежності від ситуації, що склалася, вжити передбачених вами дій.
Щоб додати програмний код обробника помилок до процедури, потрібно зробити таке:
* додати на початок процедури оператор On Error, який повідомляє VBA, де знайти програмний код обробника помилок;
* в кінець процедури додати оператор Exit Sub (або Exit Function), за яким повинен слідувати програмний код обробника помилок;
* Створити програмний код самого обробника помилок, початок якого має ідентифікуватися деякою міткою.
Усі три кроки у своїй обов'язкові. Наприклад, без оператора On Error VBA не дізнається, що обробник помилок взагалі передбачений.
Оператор On Error робить обробник помилокдоступним, повідомляючи VBA про те, де знайти цей обробник помилок у програмному коді. У використанні оператор виглядає так: On Error GoTo мітка, де мітка - це мітка, що ідентифікує в процедурі початок програмного коду обробника помилок.
Ось приклад використання оператора On Error: