
- •Содержание
- •Раздел 1. Быстрый старт 2
- •Раздел 2. Редактор Visual Basic 11
- •Immediate Window (окно проверки) 15
- •Раздел 3. Переменные и типы данных 27
- •Раздел 4. Операторы управления 51
- •Раздел 5. Процедуры, подпрограммы и функции 66
- •Раздел 6. Объекты ms Excel 101
- •Раздел 7. Пользовательские формы 139
- •Immediate Window (окно проверки) 177
- •Введение
- •Раздел 1.Быстрый старт Использование макрорекордера
- •Запись макроса
- •Запуск макроса
- •Абсолютные и относительные ссылки Запись формулы на рабочем листе
- •Макрорекордер
- •Диалоговые окна для ввода/вывода данных
- •Функция InputBox
- •Функция MsgBox
- •Раздел 2.Редактор Visual Basic
- •Окна редактора vb
- •Project Window (окно проекта)
- •Properties Window (Окно свойств)
- •Code (окно программы)
- •Immediate Window (окно проверки)
- •Получение справки
- •Запись процедур
- •Режимы работы с программой
- •Ошибки и их обнаружение
- •Отладка
- •Меню и панели инструментов Visual Basic
- •Панели инструментов Стандартная панель инструментов
- •Панель инструментов отладки
- •Раздел 3.Переменные и типы данных Объявление переменных
- •Важность объявления переменных
- •Область видимости переменных
- •Время жизни переменных
- •Инициализация переменных
- •Операции с элементарными данными
- •Оператор присваивания
- •Выполнение операций
- •Арифметические операции
- •Операции сравнения
- •Оператор Like
- •Логические операции
- •Символьные операции
- •Приоритет операций
- •Операции с другими типами данных
- •Объектные переменные
- •Массивы
- •Динамические массивы
- •Пользовательский тип
- •Раздел 4.Операторы управления
- •Условный оператор If
- •Оператор выбора Select Case
- •Операторы цикла
- •Цикл For…Next
- •Цикл For Each…Next
- •Оператор Set
- •Цикл Do…Loop
- •Цикл While…Wend
- •Раздел 5.Процедуры, подпрограммы и функции
- •Классификация процедур
- •Структура и объявление процедуры
- •Синтаксис объявления процедуры общего типа
- •Синтаксис объявления функции
- •Вызов процедуры
- •Параметры и аргументы
- •Возврат значения функции
- •Использование процедур-функций на рабочем листе
- •Поименованные аргументы
- •Использование необязательных аргументов
- •Использование параметра ParamArray
- •Вызов процедур другого проекта
- •Автопроцедуры
- •Событийные процедуры
- •Рекурсивные процедуры
- •Встроенные функции Классы функций
- •Использование табличных функций
- •Организация интерфейса при помощи встроенных функций
- •Функция MsgBox
- •Функция InputBox
- •Строковые функции
- •Примеры на использование различных строковых функций Функция Format
- •Функция Val
- •Функции Len, Mid
- •Функция Left
- •Функция Instr
- •Функция Chr
- •Математические функции
- •Функции Int и Fix
- •Функция Log
- •Функции Randomize и Rnd
- •Функции даты и времени
- •Примеры функций даты и времени Функции Day, Month, Year, DateSerial
- •Функции Now, Time, Timer
- •Функция WeekDay
- •Функции Hour, Minute, Second
- •Раздел 6.Объекты ms Excel
- •Свойства объектов
- •Методы объектов
- •Модель объектов
- •Коллекции объектов
- •Обращение к объекту Контейнеры
- •Ссылка на объект
- •Оператор With
- •Использование объектных переменных
- •Объект Application
- •Активные объекты
- •Свойства, влияющие на высвечивание на экране Свойство DisplayAlerts (r/w Boolean)
- •Свойства DisplayFormulaBar (r/w Boolean), DisplayStatusBar (r/w Boolean)
- •Свойство ScreenUpdating (r/w Boolean)
- •Свойства Top, Left, Height, Width, UsableWidth, WindowState
- •Свойство Visible (r/w Boolean)
- •Другие свойства объекта Application
- •Методы Метод Calculate
- •Метод CheckSpelling
- •Метод OnTime
- •Метод Wait
- •Коллекции объектов
- •Объекты Workbooks и Workbook
- •Событийные процедуры
- •Объекты Sheets, WorkSheets и WorkSheet
- •Свойства Свойство Name (r/w String)
- •Свойство Type (r/o String)
- •Свойство UsedRange
- •Свойства Next и Previous
- •Свойство Parent
- •Свойство Visible (r/w Boolean)
- •Методы Метод Add
- •Методы Move и Select
- •Событийные процедуры
- •Объект Range
- •Свойства Cвойство Range
- •Свойство Cells
- •Свойство Offset
- •Метод Union и свойство Areas
- •Свойства Column и Row (r/o Integer)
- •Свойства Columns и Rows
- •Свойство CurrentRegion
- •Cвойства, связанные с шириной и высотой ячейки
- •Методы Методы Select и Activate
- •Метод Clear
- •Цветовое оформление объекта Range Свойство ColorIndex
- •Свойство Color
- •Раздел 7.Пользовательские формы
- •Режимы работы с формой
- •Режим конструктора
- •Элементы управления
- •Событийные процедуры
- •Режим выполнения
- •Объекты UserForm и Controls
- •Разработка приложения
- •Приложение 1
- •Конструирование начальной формы
- •Свойства формы и элементов управления
- •Создание событийных процедур
- •Конструирование формы для выбора рабочего листа
- •Создание событийных процедур
- •Элемент ListBox
- •Событийная процедура инициализации формы
- •Завершение разработки приложения
- •Связь формы с ячейками рабочего листа
- •Элемент TextBox
- •Элемент ListBox
- •Приложение 2
- •Конструирование форм
- •Процедуры
- •Приложение a. Справочная система Просмотр объектов, их свойств и методов (Object Browser)
- •Окно Object Browser
- •Панель инструментов Object Browser
- •Выход из Object Browser
- •Интерактивная подсказка
- •Приложение b. Инструментальные средства отладки программ
- •Контрольные точки или точки останова
- •Трассировка или пошаговое выполнение программы
- •Использование объекта Debug
- •Окна отладчика
- •Immediate Window (окно проверки)
- •Окно значения переменной
- •Locals Window (окно локальных переменных)
- •Окно контрольных значений (Watches)
- •Приложение c. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Введение
Язык Visual Basic for Application (VBA) – объектно-ориентированный язык программирования, базируется на командах и синтаксисе языка Basic. VBA встроен в офисную среду и позволяет манипулировать объектами всех популярных приложений.
Язык VBA разработан таким образом, чтобы его можно было достаточно легко и быстро изучить, а затем ежедневно использовать. Он полезен как профессиональным программистам, так и простым пользователям для автоматизации повседневной рутинной работы и, как следствие этого, для повышения производительности труда. Язык позволяет сочетать простые методы по созданию документов (использование команд меню или технология перетаскивания мышью) и программные методы для создания эффективно работающего пользовательского приложения.
Все офисные приложения представляют собой совокупность готовых объектов со своими свойствами, методами и событиями. По мере развития офисных систем появляются новые объекты управления, сложность их взаимозависимостей увеличивается. Но принципы разработки приложений остаются прежними – VBA манипулирует объектами приложения, используя методы и свойства объектов.
Чаще всего основным документом, вокруг которого пользователь строит свое приложение, является MS Excel. Поэтому настоящее пособие посвящено программированию именно для этого офисного пакета.
Примеры процедур, снимки диалоговых окон, приведенные в пособии, выполнены в среде MS Office 2000 и MS Office 2003. Процедуры могут без изменений выполняться и в любой более поздней версии MS Excel.
Раздел 1.Быстрый старт Использование макрорекордера
Для разработки программ используются два способа – макрорекордер и редактор VB. Инструментальное средство Macrorecorder (Макрорекордер) отслеживает действия, пользователя, выполняемые при помощи команд меню или клавиатурных эквивалентов ("горячих" клавиш), генерирует и записывает соответствующие макрокоманды до тех пор, пока пользователь не остановит процесс записи. В результате создается программа (макрос), которая дает тот же эффект, что и выполненные действия. Это позволяет автоматизировать процессы обработки данных, проводимые командами меню, неоднократно выполняя записанную программу.
Для использования макрорекордера не требуется никаких знаний по программированию. При помощи макрорекордера удобно создавать макросы, которые автоматизируют рутинные операции: форматирование таблиц, создание диаграмм и сводных таблиц, работу со списками данных и т.д.
Прежде чем записать макрос, необходимо продумать выполняемые действия, то есть составить алгоритм. Особое внимание необходимо уделить следующим вопросам:
какие действия должен выполнять макрос;
какие предварительные действия должны быть выполнены перед запуском макроса (открытие файла, активизация листа, выделение интервала ячеек, режим работы приложения и пр.) 1;
какие действия необходимо выполнить после завершения работы макроса.
Если в процессе записи макроса была допущена ошибка, то можно отменить последние команды (Правка-Отменить) или повторить запись некоторых команд. Макрорекордер несколько модифицирует действия пользователя: не фиксирует отмененные вызовы команд, объединяет в один оператор несколько одинаковых последовательно выполненных действия, например, перемещения по таблице.
Впоследствии можно отредактировать или расширить макрос, дописав в него недостающие команды при помощи редактора VB или при помощи макрорекордера. Записанные при помощи макрорекордера действия с объектами можно скопировать и вставить в текст процедуры, разрабатываемой на VBA.
Сочетание макрорекордера и редактора VB позволяет создать канву программы, включить в нее операторы обработки объектов MS Excel, организовать интерактивный режим работы, предусмотреть использование собственных меню и панелей инструментов.
Важно
Макрорекордер особенно полезен для записи действий по обработке объектов, так как помогает получить представление об имеющихся у объекта свойствах и методах и способах их применения.
Для получения контекстной справки по любому объекту, свойству или методу достаточно выделить его в процедуре и нажать клавишу F1.
Процедуры, созданные макрорекордером, не являются достаточно эффективными и потому требуют корректировки с целью удаления лишних операторов (очистка макроса). Макрорекордер записывает установку всех свойств объекта, даже если изменилось только одно из них, записывает команды, соответствующие активизации обрабатываемых объектов (ячеек, окон и др.).
Действия пользователя при использовании макрорекордера
Действия |
Команды меню или функциональные клавиши |
Пиктограмма |
Содержание статусной строки |
Начать запись макроса |
Сервис-Макрос-Начать запись (Tools-Record Macro-Record New Macro) |
|
Запись (Recording) |
Остановить запись макроса |
Сервис-Макрос-Остановить запись (Tools-Record Macro-Stop Macro) |
|
Готово (Ready) |
Редактировать макрос |
Alt+F11 |
|
|
Выполнить макрос |
Сервис-Макрос-Макросы (Tools-Macro-Macros) |
|
|
Сохранить макрос |
Макрос автоматически сохраняется в составе рабочей книги. Возможно сохранение в Личной книге Макросов (Personal.xls), которая находится в папке Xlstart |
Советы
Не записывайте макрорекордером слишком большие макросы. Всегда можно объединить несколько макросов в одну процедуру или записать в макросе оператор вызова другого макроса.
Добавляйте комментарии к командам макроса.
Помните, что все действия, касающиеся макрорекордера, выполняются только для рабочего или диаграммного листа, но не для редактора VB.
При использовании макрорекордера пользуйтесь абсолютными или относительными ссылками на ячейки в соответствии с необходимостью.