- •Что такое Visual Basic for Applications
- •Автоматизация среды Excel
- •Запись простого макроса
- •Выполнение макросов
- •Просмотр кода макроса
- •Редактирование кода макроса
- •Ограниченность макросов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Назначение макросам комбинаций клавиш
- •Где хранить макросы
- •Создание личной книги макросов
- •Сохранение макросов в личной книге макросов
- •Выполнение макросов из личной книги макросов
- •Редактирование макросов в личной книге макросов
- •Удаление макросов из личной книги макросов
- •Назначение макросов командным кнопкам
- •Назначение макроса графическим изображениям
- •Назначение макросов кнопкам панелей инструментов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Введение в процесс разработки приложений
- •Кто будет использовать приложение
- •Откуда будут поступать данные для приложения
- •Где и как будут храниться данные, полученные с помощью приложения
- •Как данные будут обрабатываться приложением
- •Вид выходных данных
- •Типы элементов управления
- •Вставка элементов управления в рабочий лист
- •Форматирование элементов управления
- •Имена элементов управления
- •Экранные формы
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Модуль: дом для кода vba
- •Обзор процедур
- •Создание процедур
- •Выполнение процедуры
- •Сохранение изменений в модуле
- •Переменные
- •Типы данных
- •Объявление переменных
- •Соглашения об именах переменных
- •Массивы
- •Присвоение значений переменным
- •Использование констант
- •Область видимости переменных и констант
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Функция MsgBox
- •Функция InputBox
- •Метод InputBox
- •Именование аргументов
- •Объединение текстовых строк
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Управление выполнением приложения
- •Оператор If
- •Оператор Select Case
- •Использование встроенных диалоговых окон Excel
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Оператор For…Next
- •Оператор Do... Loop
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое объект
- •Объекты, свойства и методы
- •Объектная модель Excel
- •Пять наиболее часто используемых объектов
- •Как понимать иерархию объектной модели
- •Ссылка на объекты в коде vba
- •Работа с объектами
- •Задание свойств объекта
- •Использование методов
- •Справочная информация о свойствах и методах
- •Переменные-объекты
- •1: Sub ПримерПеремОбъекта()
- •Коллекции
- •Метод Add
- •Свойство Count
- •1: Sub КоличРабЛистов()
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Объект Application
- •Использование встроенных функций Excel
- •Свойства и методы объекта Application
- •Объект Workbook
- •Объект Worksheet
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Описание объекта Range
- •Свойства объекта Range
- •Методы объекта Range
- •Использование оператора With
- •Оператор For Each
- •Использование объекта Range
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Панели инструментов
- •Просмотр кода
- •Использование справочной системы
- •Просмотр объектов
- •Параметры редактора Visual Basic
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Тестирование и отладка как этап разработки приложений
- •Отладка
- •Режим останова
- •Использование окна Immediate
- •Просмотр значений в окне Immediate
- •Пошаговое выполнение программ
- •Наблюдение за переменными
- •Исправление ошибок
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Понятие об обработке ошибок
- •Перехват ошибок
- •Написание процедуры обработки ошибся
- •Выход из обработчика ошибок
- •Пример обработчика ошибок
- •Централизованный обработчик ошибок
- •Вопрос и ответы
- •Практикум
- •Упражнение
- •Вставка экранных форм в приложения
- •Свойства экранной формы
- •Выполнение экранной формы
- •Вставка элементов управления в экранную форму
- •Свойства элементов управления
- •Свойства командных кнопок
- •Свойства переключателей
- •Блокировка элементов управления
- •Экранные подсказки к элементам управления
- •Задание порядка обхода элементов формы
- •Назначение быстрых клавиш элементам формы
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Инициализация значений экранной формы
- •Вызов экранной формы
- •Управление поведением формы
- •Проверка вводимых данных
- •Сохранение данных, введенных в форму
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Настройка панелей инструментов
- •Создание панелей инструментов
- •Процедуры, управляющие панелями инструментов
- •Создание панели инструментов
- •Удаление панели инструментов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Способы изменения меню
- •Программная работа с меню
- •Добавление пунктов и команд меню
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Создание диаграмм
- •Запись макроса построения диаграмм
- •Код макроса
- •Изменение кода макроса
- •Усовершенствованная процедура построения диаграмм
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Работа со сводной таблицей
- •Основы сводных таблиц
- •Запись макроса для создания сводной таблицы
- •Исследование кода макроса
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Базы данных, доступные из Excel
- •Средства доступа к внешним данным
- •Использование ms Query
- •Код записанного макроса
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое ado
- •Объекты доступа к базам данных
- •Использование ado
- •Создание ссылки на библиотеку ado
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Вставка полей в экранную форму
- •Перемещение по записям
- •Редактирование данных
- •Добавление средства поиска
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое автоматизация
- •Основы автоматизации
- •Ссылка на библиотеку объектов приложения-сервера
- •Просмотр библиотеки объектов
- •Создание экземпляра приложения-сервера
- •Использование объектов Microsoft Word
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Автоматическое выполнение процедур
- •Процедуры, выполняемые при наступлении событий
- •Создание надстроек Excel
- •Упражнение
- •Приложение. Ответы Ответы к 1-му часу Тесты
- •Ответы ко 2-му часу Тесты
- •Ответы к 3-му часу Тесты
- •Ответы к 4-му часу Тесты
- •Упражнение
- •Ответы к 5-му часу Тесты
- •Упражнение
- •Ответы к 6-му часу Тесты
- •Упражнение
- •Ответы к 7-му часу Тесты
- •Упражнение
- •Ответы к 8-му часу Тесты
- •Упражнение
- •Ответы к 9-му часу Тесты
- •Упражнение
- •Ответы к 10-му часу Тесты
- •Упражнение
- •Ответы к 11-му часу Тесты
- •Упражнение
- •Ответы к 12-му часу Тесты
- •Упражнение
- •Ответы к 13-му часу Тесты
- •Упражнение
- •Ответы к 14-му часу Тесты
- •Ответы к 15-му часу Тесты
- •Упражнение
- •Ответы к 16-му часу Тесты
- •Упражнение
- •Ответы к 17-му часу Тесты
- •Упражнение
- •Ответы к 18-му часу Тесты
- •Упражнение
- •Ответы к 19-му часу Тесты
- •Упражнение
- •Ответы к 20-му часу Тесты
- •Упражнение
- •Ответы к 21-му часу Тесты
- •Упражнение
- •Ответы к 22-му часу Тесты
- •Упражнение
- •Ответы к 23-му часу Тесты
- •Упражнение
- •Ответы к 24-му часу Тесты
- •Упражнение
Тестирование и отладка как этап разработки приложений
Предположим, что уже написан код вашей процедуры. Следующий этап в создании любой процедуры - тестирование написанного кода. Тестирование - это процесс выполнения процедуры и исследование всех аспектов ее работы. Например, в процессе тестирования вы должны ввести различные типы данных (конечно, если это предусмотрено в процедуре), щелкнуть на всех командных кнопках, сделать выделение с последующим манипулированием различных диапазонов ячеек и т.п. Цель тестирования - проверить правильность результатов выполнения процедуры и ее реакцию на разнообразные действия пользователя. Если во время работы процедуры получены неверные результаты вычислений, непредвиденная реакция на те или иные действия пользователя, либо вообще произошла остановка выполнения, то это говорит о том, что код процедуры имеет ошибки (bugs).
Теперь надо подумать, что вы, как программист, можете сделать для минимизации возможных неполадок в своей процедуре. Я, конечно, понимаю ваше стремление при создании нового проекта сразу приступить к написанию кода. Но если вы прислушались к моим рекомендациям по разработке приложений (см. начало 3-го часа "Работа с элементами управления"), то у вас есть сформулированные и документированные цели и требования к разрабатываемому приложению. В результате вы получаете четкую картину того, что и как должно выполнять приложение. Это, в свою очередь, помогает резко ограничить круг проблем, которые могут возникнуть при выполнении приложения. Также важно с практической точки зрения разграничивать приложения, разрабатываемые "для личного потребления", и приложения, с которым будут работать сторонние пользователи. Требования к приложениям, с которыми будут работать другие пользователи, естественно, значительно выше и на их тестирование и отладку потребуется больше времени. В любом случае, то время, которое вы потратите на анализ и документирование на первом этапе разработки приложения, с лихвой окупится на последующих этапах, в частности на этапе тестирования приложения.
Еще одним хорошим средством предотвращения и отслеживания возможных ошибок в программах является поддержка соглашений об именах элементов управления, переменных, констант, объектов и т.д. Все примеры в этой книге удовлетворяют соглашениям об именах.
Соглашения об именах элементов управления приведены в 3-м часе "Работа с элементами управления", а соглашения об именах переменных и констант - в 4-м часе "Переменные и константы".
Не забудьте также о комментариях в коде ваших процедур. Комментарии помогут разобраться в назначении того или иного фрагмента кода. Кроме того, без понятных комментариев вы не сможете поддерживать ваше приложение в будущем.
Выполняя упражнения из этой книги, вы, вероятно, не раз допускали какие-либо ошибки при вводе кода. В этом случае после нажатия клавиши <Enter> вы видели окно с сообщением о синтаксической ошибке (рис. 12.1). По умолчанию редактор Visual Basic отслеживает синтаксические ошибки в коде процедур после нажатия клавиши <Enter>. Это полезное средство, но при желании вы его можете отключить (или восстановить), удалив (или установив) флажок опции Auto Syntax Check (Автоматическая проверка синтаксиса) на вкладке Editor (Редактор) диалогового окна Options (Параметры).
Другой тип ошибок называется ошибками выполнения (runtime error). Это такие ошибки, которые приводят к остановке выполнения приложения. Иногда вина за такие ошибки ложится на программиста. Например, вы ввели имя объекта с ошибкой. VBA может обнаружить такую ошибку только во время выполнения программы. Ошибки выполнения также могут быть реакцией на действия пользователя, которые не предусмотрены в программе, например на ввод некорректного значения аргумента функции, которую вы создали.
Наконец, существует еще один тип ошибок, который называется логическими ошибками (logic error). VBA не может отследить такой тип ошибок, так как в этом случае обычно нет грамматических и синтаксических ошибок в написании операторов. В этом случае говорят, что нарушена логика выполнения операторов. Далее вы узнаете, что большинство средств отладки направлено именно на поиск и исправление логических ошибок.
Рис. 12.1. Редактор Visual Basic немедленно реагирует на синтаксические ошибки