Основы программирования на VBA для Microsoft Excel. Учебное пособие
.pdf
Средства отслеживания и исправления ошибок
ВVBA имеются средства для отслеживания и исправления ошибок
впрограммах. Чтобы увидеть все возможности выявления ошибок, нужно дать команду Tools/ Options.
Для идентификации логических ошибок используются установка контрольных точек (точек останова), пошаговый режим выполнения программы, наблюдение за значениями переменных и другие методы.
Большинство синтаксических ошибок можно устранить путем обнаружения необъявленных переменных.
Основные средства отладки доступны через пункт меню Debug (Отладка) и панель инструментов Debug. Отладку проще и быстрее выполнять с помощью панели инструментов Debug. Для отображения этой панели нужно выполнить команду View/ Toolbars/ Debug. Внешний вид панели Debug показан на рис. 7.
Рис. 7. Панель инструментов Debug
На панели Debug слева направо показаны следующие инструменты, используемые для отладки приложений:
Design Mode – включить/ выключить режим конструктора;
Run Sub/UserForm – запуск программы;
Break – прерывание (приостановка программы); Reset – сброс (останов программы);
Toggle Breakpoint – включить/ выключить контрольную точку (точку останова);
Step Into – пошаговая обработка с заходом в вызываемые процедуры;
Step Over – пошаговая обработка без захода в процедуры;
91
Step Out – выполнение программы до выхода из текущей процедуры;
Locals Window – включить/ выключить локальное окно;
Immediate Window – включить/ выключить окно непосредственного выполнения;
Watch Window – включить/ выключить окно наблюдаемых перменных;
Quick Watch – быстрый просмотр значения переменной;
Call Stack (Стек вызова) – просмотр списка вызванных, но незавершенных процедур.
Тестирование операторов
Чтобы протестировать отдельный оператор, его нужно выполнить, задав ему конкретные данные или условия. Для этой цели часто используют функцию MsgBox, например:
MsgBox Range("B1").Value
Для тестирования одного или нескольких операторов приложения их можно поместить в процедуру стандартного модуля и, переместив указатель в любое место процедуры, нажать функциональную клавишу F5, при этом процедура будет выполнена.
Пример процедуры стандартного модуля VBA для тестирования нескольких операторов:
Sub Test()
Dim B As Integer B=5
MsgBox Range("A1").Value + B End Sub
Окно быстрого выполнения
Для тестирования отдельных операторов приложения, без создания процедуры, можно использовать окно Immediate (Безотлагательный). Это окно вызывается комбинацией клавиш Ctrl+G и используется для немедленного выполнения операторов.
92
Если поместить операторы процедуры Test в окно Immediate и нажать клавишу Enter, то получим тот же эффект, что и при запуске процедуры.
Для проверки значения выполненного оператора его можно поместить в окно Immediate, поставить перед ним знак вопроса, например:
? 2+3 или ? Range("A1").Value
После этого следует нажать клавишу Enter. Знак вопроса в данном случае представляет собой сокращенный символ команды Print.
Результат выполнения выражения будет отображен в следующей строке окна Immediate.
Использование Option explicit
По умолчанию VBA позволяет обходиться без объявления переменных, не заботясь о применении ключевого слова Dim. При этом неправильно набранное имя приведет к добавлению новой переменной с другим именем. Для необъявленных переменных используется тип
Variant.
Для уменьшения вероятности возникновения ошибок необходимо каждую переменную в программе объявлять явно. А для отслеживания ошибок, связанных с неявным объявлением переменных, используется выражение Option explicit (явный выбор). Это выражение добавляется
вкаждый модуль или форму перед началом всех процедур, в раздел
General.
При использовании этого выражения попытка применить необъявленную переменную приведет к выдаче сообщения об ошибке. В ином случае введенное имя будет воспринято как имя новой переменной.
Кроме перечисленных средств для уменьшения ошибок следует придерживаться следующих рекомендаций:
1)большое количество операторов желательно разделить на несколько относительно небольших процедур. Рекомендемый размер процедуры – не более 25–30 строк;
2)переменные с областью видимости global и public используются
всамых крайних случаях;
3)числовые переменные объявляют с использованием типа с плавающей точкой. Использование целочисленных переменных в некоторых ситуациях может привести к ошибке, связанной с округлением значения до целого числа.
93
Если в выполняющейся программе и возникникла ошибка, компилятор VBA выдает на экран сообщение о типе и номере ошибки и предлагает пользователю завершить работу программы или перейти в режим ее отладки.
Переход в режим отладки осуществляется нажатием кнопки Debug. При этом программа не останавливается, а только на время прекращает свою работу. На экран выводится окно кода с выделенной строкой, содержащей ошибку.
Если ошибка несерьезная, ее можно исправить и продолжить выполнение программы, нажав клавишу F5 или дав команду Run/ Continue. Выполнение программы будет продолжено со строки, следующей за строкой, содержавшей ошибку.
Для запуска программы с другой строки нужно выделить эту стро-
ку, дать команду Debug/ Set Next Statement (Ctrl+F9) и нажать клавишу F5.
Использование точек останова
При отладке для останова запущенной на выполенние программы в нужном месте используются точки останова (точки прерывания). Останов работы программы наступает непосредственно перед выполнением строки, отмеченной точкой останова.
Создать точку останова можно одним из следующих способов:
1)щелкнуть левой кнопкой мыши в нужном месте на выделенной полосе в левой части окна кода;
2)выделить строку программы и нажать клавишу F9;
3)дать команду Debug/ Toggle Breakpoint;
4)установить точку останова с помощью панели Debug или стандартной панели инструментов.
Строка с установленной точкой останова выделяется красным цветом. После запуска программа будет остановлена в точке останова и строка после этого будет выделена желтым цветом и обозначена стрелкой.
Используя точки останова, можно легко перемещаться строка за строкой по коду, выполнять изменения в программе и продолжать ее работу нажатием клавиши F5.
Точку останова можно отменить щелчком по строке, ее содержащей. Для отмены всех точек останова нужно дать команду Debug/ Clear All Dreakpoints (убрать все точки останова).
94
Точки останова используются для сужения области исследуемого программного кода. Более детально исследовать состояние программы можно с помощью просмотра контрольного значения требуемой переменной.
Просмотр значений переменных
Проверка значения отдельной взятой переменной заключается в наведении указателя на имя переменной в программе и просмотре ее значения в появившемся окне. Это значение рекомендуется проверять в режиме прерывания. Проверка возможна, если включен параметр Auto Data Tips в меню Tools/ Options. Этот параметр включается по умолчанию.
Для просмотра информации об области видимости и типе данных переменной необходимо установить на нее курсор ввода текста и в меню Edit выбрать Quick Info или использовать комбинацию клавиш
Ctrl+I.
Для просмотра контрольного значения выделенной переменной можно использовать и диалоговое окно Quick Watch (быстрый просмотр), которое можно отобразить с помощью одноименной кнопки на панели Debug. В этом окне отображается имя переменной, ее значение и имя подпрограммы, где она используется.
Если переменной или свойству объекта присвоено неверное значение, можно исправить его и вернуться назад, используя команду Debug/ Set Next Statement (Ctrl+F9), а затем продолжить выполнение с исправленным значением.
В режиме отладки программы наблюдаемым может быть любое выражение VBA, в том числе переменная, свойство объекта или вызов функции.
Окна наблюдений
Наблюдать сразу за несколькими свойствами или переменными можно с помощью специальных окон Locals Window (окно локальных переменных) и Watch Window (окно контрольных значений). Эти окна по умолчанию располагаются в низу экрана, и открыть их можно с помощью соответствующих кнопок на панели Debug или команд меню
View.
95
Окно локальных переменных предназначено для наблюдения за значением локальных переменных выполняемой процедуры. Окно контрольных значений служит для постоянного наблюдения за специально выбранными пользователем переменными или свойствами.
Занести переменную в список наблюдаемых контрольных значений, располагаемых в окне Watch, можно с помощью кнопки Add в диалоговом окне Quick Watch. Второй способ занесения заключается в использовании диалогового окна Add Watch, которое можно отобразить с помощью команды Debug/ Add Watch.
Внешний вид окна Add Watch показан на рис. 8.
Рис. 8. Окно Add Watch
Установки, используемые в окне Add Watch, имеют следующий смысл:
Watch Expression – просмотр значения;
Break When Value Is True – прерывание при получении значения
True;
Break When Value Changes – прерывание при изменении значения.
96
ОГЛАВЛЕНИЕ |
|
ВВЕДЕНИЕ ........................................................................................................... |
3 |
Области применения VBA ................................................................................ |
4 |
Основные этапы развития программирования ............................................... |
5 |
Основные сведения об объектно-ориентированном программирова- |
|
нии ...................................................................................................................... |
6 |
1. ОБЪЕКТЫ И ОБЪЕКТНАЯ МОДЕЛЬ EXCEL ...................................... |
10 |
Объект Application (Приложение) ................................................................. |
15 |
Объект Workbook (Рабочая книга) ................................................................. |
20 |
Объект Worksheet (Рабочий лист) .................................................................. |
21 |
Объект Range (Диапазон) ............................................................................... |
22 |
Объект Chart (Диаграмма) .............................................................................. |
25 |
Объект PivotTable (Сводная таблица) ............................................................ |
27 |
Объект QueryTable (Таблица запроса) ........................................................... |
29 |
2. СРЕДА ПРОГРАММИРОВАНИЯ – РЕДАКТОР VBA ........................... |
30 |
Общие сведения о редакторе VBA ................................................................ |
30 |
Главное окно редактора VBA ......................................................................... |
31 |
Окно проводника проекта (Project Explorer) ................................................. |
33 |
Окно пользовательских форм (UserForm) и панель элементов управ- |
|
ления (Toolbox) ................................................................................................ |
35 |
Окно свойств (Properties Window) ................................................................. |
36 |
Окно редактирования кода (Code) ................................................................. |
37 |
Окно просмотра объектов (Object Browser) .................................................. |
39 |
3. СИНТАКСИС И ПРОГРАММНЫЕ КОНСТРУКЦИИ VBA ................ |
41 |
Основы синтаксиса .......................................................................................... |
41 |
Алфавит VBA .................................................................................................. |
42 |
Типы данных .................................................................................................... |
43 |
Операнды, операции и выражения ................................................................ |
45 |
97 |
|
Переменные и константы ............................................................................... |
48 |
Операторы ........................................................................................................ |
51 |
Процедуры и функции .................................................................................... |
59 |
Диалоговые окна ............................................................................................. |
62 |
Массивы ........................................................................................................... |
64 |
Файлы ............................................................................................................... |
67 |
Элементы управления ..................................................................................... |
68 |
4. ОСНОВЫ РАЗРАБОТКИ ПРИЛОЖЕНИЙ В MS EXCEL .................... |
72 |
Создание и использование форм .................................................................... |
72 |
Элементы управления и их применение ....................................................... |
75 |
Вызов функции рабочего листа из программы на VBA ............................. |
87 |
Создание пользовательских функций рабочего листа ................................. |
87 |
Макросы ........................................................................................................... |
88 |
5. ОТЛАДКА И ТЕСТИРОВАНИЕ ПРОГРАММНОГО ПРОЕКТА ....... |
90 |
Виды ошибок ................................................................................................... |
90 |
Средства отслеживания и исправления ошибок ........................................... |
91 |
Тестирование операторов ............................................................................... |
92 |
Окно быстрого выполнения ........................................................................... |
92 |
Использование Option explicit ........................................................................ |
93 |
Использование точек останова ....................................................................... |
94 |
Просмотр значений переменных .................................................................... |
95 |
Окна наблюдений ............................................................................................ |
95 |
98
Бычков Михаил Иванович
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА VBA
ДЛЯ MICROSOFT EXCEL
Учебное пособие
Редактор Н.А. Лукашова
Выпускающий редактор И.П. Брованова Корректор Л.Н. Киншт
Дизайн обложки А.В. Ладыжская Компьютерная верстка С.И. Ткачева
Подписано в печать 02.09.2010. Формат 60 84 1/16. Бумага офсетная. Тираж 100 экз. Уч.-изд. л. 5,81. Печ. л. 6,25. Изд. № 140. Заказ № . Цена договорная
Отпечатано в типографии Новосибирского государственного технического университета
630092, г. Новосибирск, пр. К. Маркса, 20
