Отмена, а затем на кнопке OK, что- бы закрыть последующее окно сообщения. 9. Вернуться в редактор Visual Basic. В окне Immediate появятся две строки текста. Первая строка появилась во время первого выполнения процедуры, вторая – при повторном выполне- нии. 3.1.1.3. Пошаговое выполнение программ В большинстве случаев при отладке проверяется логика выполнения процедуры, поэтому необходимо отслеживать порядок исполнения строк кода. Это особенно необходимо при проверке работы операторов If и Select. Для этого применяется особый режим выполнения программ – по- шаговое выполнение, когда программа останавливается после исполнения каждой строки кода. Существует два режима пошагового выполнения: Step Into (Тоталь- ное пошаговое выполнение) и Step Over (Пошаговое выполнение с пере- шагиванием через процедуры). Оба режима позволяют пошагово выпол- нять весь код процедуры и отслеживать значения переменных и свойств. Есть и различия между этими режимами. Если отлаживается проце- дура, которая вызывает другие процедуры, и нет необходимости их вы- полнять в пошаговом режиме, то используется режим Step Over. В этом режиме вызываемые процедуры выполняются в обычном режиме, а не пошагово. Если нужно просмотреть в пошаговом режиме и вызываемые процедуры, то применяется режим Step Into. Обычно в пошаговом режиме выполняется не вся процедура. Чаще точка останова устанавливается в том месте кода процедуры, которое вы- зывает сомнение. Затем процедура выполняется, доходит до точки оста- нова, останавливается, а далее применяется пошаговый режим. Покажем, как выполняется пошаговый режим на примере нашей процедуры Ошибка. 1. Удалить инструкцию Debug.Print из процедуры. 2. Установить точку останова в строке после оператора InputBox. 3. Нажать клавишу F5, чтобы начать выполнение процедуры. 4. Щёлкнуть на кнопке Отмена в окне ввода. Произойдёт переход в ок- но редактора Visual Basic, так как процедура достигла точки остано- ва. Следующий выполняемый оператор – оператор If. Надо просле- дить, как выполняется этот оператор. По логике, сейчас условное выражение в операторе If имеет значение True и должен выполнять-
130 ся оператор вывода окна сообщения о том, что процедура заверше- на. 5. Нажать клавишу F8, чтобы перейти в пошаговый режим и выполнить следующий оператор. После проверки условия оператора If процеду- ра не стала выполнять оператор вывода окна сообщения, а перешла к пункту Else и выделила его, т.е. определена инструкция, которая работает не так, как было задумано. 5. Нажать клавишу F5, чтобы продолжить выполнение процедуры в обычном режиме. 3.1.2. Исправление ошибок Теперь можно исправить ошибку в процедуре Ошибка. Очевидно, что метод InputBox при щелчке на кнопке Отмена возвращает значение False, а не пустую строку, как первоначально ошибочно предполагалось. Ниже приведён код исправленной процедуры. Sub Ошибка() Dim response response = Application.InputBox("Введите ваше имя") If response = False Then MsgBox "Процедура завершена" Exit Sub Else MsgBox "Ваше имя - " & response End If End Sub Следует протестировать эту процедуру ещё раз, чтобы убедиться в том, что она работает так, как задумано.
131 Библиографический список 1. Гарнаев А.Ю. MS Excel 2002: разработка приложений. – СПб.: БХВ- Петербург, 2003. 2. Кузьменко В.Г. VBA 2002. – М.: ЗАО «Издательство БИНОМ», 2002. 3. Пол Сана и др. Visual Basic для приложений (версия 5) в подлиннике: пер. с англ. – СПб.: BHV – Санкт-Петербург, 1997. 4. Уокенбах, Джон. Профессиональное программирование на VBA в Excel 2003: Пер. с англ. – М.: Издательский дом “Вильямс”, 2005. 5. http://college.biysk.secna.ru/Acces/Glava%2013/Index13.htm 6. http://text.fdc.seua.am/avtor/vba_intuit/index-2.htm 7. http://tid.com.ua/tid1/addonres.php?id=6285) 8. http://window.edu.ru/window_catalog/pdf2txt?p_id=21859 9. http://www.askit.ru/custom/vba_office/vba_office_plan.htm 10. http://www.askit.ru/custom/vba_office/vba_office_plan.htm 11. http://www.csu.ac.ru/rusear/VBA/9_VarTypeConst.htm 12. http://www.eusi.ru/lib/podlin_programmirovanie_microsoft_excel_24/1.shtml 13. http://www.firststeps.ru/vba/vbahelp/vbahelp1.html 14. http://www.manage.ru/itm/excel/pikuza/01.shtml -Автомати. бизнес-проц.VBA 15. http://www.eusi.ru/lib/podlin_programmirovanie_microsoft_excel_24/index.shtml
132 Оглавление 1. Объектно-ориентированное программирование ................................... 3 2. Основные понятия .................................................................................... 7 2.1. Алфавит и словарь языка ..................................................................... 8 2.2. Переменные ......................................................................................... 10 2.3. Константы ............................................................................................. 13 2.4. Строковые переменные ...................................................................... 14 2.5. Массивы ................................................................................................ 15 2.6. Пользовательские типы данных ......................................................... 19 2.7. Операции VBA ...................................................................................... 20 2.8. Объектная модель Excel ..................................................................... 21 2.8.1. Свойства и методы объектов .......................................................... 21 2.8.2. Отображение объектной модели Excel .......................................... 22 2.8.2.1. Иерархия объектной модели ........................................................ 24 2.8.2.2. Ссылка на объекты в коде VBA .................................................... 24 2.8.3. Работа с объектами .......................................................................... 25 2.8.3.1. Задание свойств объекта .............................................................. 25 2.8.3.2. Использование методов объекта ................................................. 25 2.8.3.3. Переменные-объекты .................................................................... 27 2.8.3.4. Коллекции ....................................................................................... 27 2.8.3.5. Метод Add ....................................................................................... 28 2.8.3.6. Свойство Count .............................................................................. 28 2.8.4. Свойства и методы основных объектов Excel ............................... 28 2.8.4.1. Объект Application .......................................................................... 28 2.8.4.2. Объект Worksheet .......................................................................... 30 2.8.4.3. Объект Range ................................................................................. 31 2.8.5. Просмотр объектов ........................................................................... 33 2.8.6. Использование справочной системы .............................................. 35 2.8.6.1. Использование функциональной клавиши F1 ............................ 35 2.8.6.2. Использование помощника ........................................................... 36 2.9. Ввод и вывод данных .......................................................................... 38 2.9.1. Функция MsgBox ................................................................................ 38 2.9.2. Функция InputBox .............................................................................. 42 2.9.3. Метод InputBox .................................................................................. 43 2.9.4. Объединение текстовых строк ........................................................ 45 2.10. Концепция событий Excel ................................................................. 46 2.10.1. Типы событий Excel .......................................................................... 46 2.10.2. События объекта Workbook ............................................................. 47 2.10.3. События объекта Worksheet ............................................................ 51 2.10.4. События объекта Application............................................................ 52 2.10.5. События объекта UserForm ............................................................. 52 2.10.6. События, не связанные с конкретными объектами ....................... 52 2.10.6.1. Метод OnKey .................................................................................. 52 2.10.6.2. Событие OnTime ............................................................................ 54 2.11. Формы пользователя ........................................................................ 54
133 2.11.1. Свойства, методы и события экранных форм ............................... 55 2.11.1.1. Некоторые свойства форм............................................................ 56 2.11.1.2. Некоторые методы форм .............................................................. 56 2.11.1.3. Некоторые события форм............................................................. 57 2.11.2. Элементы управления ...................................................................... 57 2.11.2.1. Элемент управления Label (Надпись) ......................................... 59 2.11.2.1.1. Окно свойств формы .................................................................. 59 2.11.2.2. Элемент управления CommandButton (Кнопка) ......................... 60 2.11.2.3. Элемент управления TextBox (Текстовое поле) ......................... 62 2.11.2.4. Элемент управления ComboBox .................................................. 64 2.11.2.5. Элемент управления ListBox (список) ......................................... 66 2.11.2.6. Элемент управления CheckBox (Флажок) ................................... 68 2.11.2.7. Элемент управления ToggleButton (Выключатель) .................... 68 2.11.2.8. Элемент управления OptionButton (Переключатель)................. 69 2.11.2.9. Элемент управления Image (Рисунок) ......................................... 70 2.11.2.10. Элемент управления ScrollBar (полоса прокрутки) ................. 70 2.11.2.11. Элемент управления SpinButton (Счётчик) .............................. 71 2.11.2.12. Элемент управления RefEdit (Поле со свёртыванием) .......... 71 2.11.2.13. Элементы управления на рабочем листе ................................ 73 2.12. Инструкции VBA ................................................................................ 77 2.12.1. Оператор присваивания ................................................................... 77 2.12.2. Инструкция Set .................................................................................. 77 2.12.3. Циклы ................................................................................................. 78 2.12.3.1. Инструкция For… Next ................................................................... 78 2.12.3.2. Инструкция While…Wend ............................................................ 80 2.12.3.3. Инструкция Do... Loop................................................................... 81 2.12.3.4. Инструкция For Each…Next .......................................................... 84 2.12.4. Инструкции перехода ...................................................................... 86 2.12.4.1. Инструкция условного перехода If…Then…Else ....................... 86 2.12.4.2. Инструкция Select…Case .............................................................. 90 2.12.4.3. Инструкция безусловного перехода GoTo ................................. 91 2.12.4.4. Инструкции перехода к обработчику ошибок On Error .............. 92 2.12.4.5. Инструкции прерывания выполнения блока Exit ....................... 94 2.12.4.6. Инструкция передачи управления выполнением процедуры подпрограмме внутри процедуры GoSub… Return .................................... 94 2.12.4.7. Инструкция передачи управления выполнением процедуры на одну из нескольких строк кода On…GoSub и On…GoTo ..................... 95 2.13. Функции VBA ..................................................................................... 97 2.13.1. Встроенные функции ........................................................................ 97 2.13.1.1. Математические функции ............................................................. 97 2.13.1.2. Функции преобразования данных ................................................ 97 2.13.1.3. Функции даты и времени ............................................................... 98 2.13.1.4. Строковые функции ....................................................................... 99 2.13.1.5. Примеры использования функций VBA ..................................... 100 2.13.1.5.1. Удаление ненужных символов ................................................ 100 2.13.1.5.2. Определение длины строки..................................................... 100
134 2.13.1.5.3. Сравнение и поиск строк ......................................................... 101 Функция StrComp ................................................................................ 101 Функция InStr ...................................................................................... 102 2.13.1.5.4. Выделение части строки .......................................................... 103 Функция Left ........................................................................................ 103 Функция Right ..................................................................................... 103 Функция Mid ........................................................................................ 103 2.13.1.5.5. Форматирование значений данных ........................................ 104 2.13.2. Функции, определённые пользователем ...................................... 105 2.14. Файлы VBA ...................................................................................... 107 2.14.1. Типы файлов в VBA ........................................................................ 107 2.14.2. Открытие и закрытие файла .......................................................... 108 2.14.3. Ввод данных в файл последовательного доступа ...................... 109 2.14.4. Вывод данных из файла последовательного доступа ................ 110 2.14.5. Работа с файлом произвольного доступа .................................... 112 2.15. Создание процедуры ...................................................................... 115 2.16. Выполнение процедуры ................................................................. 118 2.17. Сохранение процедуры .................................................................. 118 2.18. Запись последовательности действий пользователя ................. 118 2.19. Просмотр кода макроса .................................................................. 120 3. Отладка программ................................................................................. 122 3.1. Тестирование и отладка как этап разработки приложений ........... 123 3.1.1. Отладка ............................................................................................ 123 3.1.1.1. Режим останова ........................................................................... 125 3.1.1.2. Использование окна Immediate .................................................. 126 3.1.1.2.1. Просмотр значений в окне Immediate ........................................ 127 3.1.1.3. Пошаговое выполнение программ ............................................. 129 3.1.2. Исправление ошибок ...................................................................... 130 Библиографический список ........................................................................ 131
135 Учебное издание Власовец Александр Михайлович ВВЕДЕНИЕ В VBA Учебное пособие Редактор Т.Ф. Морозова Подписано в печать 27.05.10. Формат 6084 1/16. Усл. печ. л. 8,4. Тираж 300 экз. Заказ 262. РТП изд-ва СПбГУЭФ. Издательство СПбГУЭФ. 191023, Санкт-Петербург, Садовая ул., д. 21.
|