- •Введение
- •Основные понятия объектно-ориентированного программирования
- •Основные элементы управления в редакторе vba
- •Стандартные приемы программирования в среде vba Введение
- •Отладка программы
- •Основные элементы программного кода в среде vba Описание переменных
- •Константы
- •Операторы присваивания
- •Арифметические выражения
- •Логические выражения
- •Текстовые выражения
- •Линейные программы
- •Оператор перехода
- •Конструкции принятия решений
- •Ветвление по условиям
- •Циклы в программе
- •Массивы
- •Пользовательские процедуры
- •Две основные функции преобразования типов данных
- •Ввод, вывод и генерация исходных данных
- •Приемы работы в среде программирования vba
- •Запуск среды vba
- •Создание функции пользователя
- •Создание макрокоманды (макроса)
- •Создание пользовательской формы
- •Работа с листами книги
- •Лабораторные задания по темам Целочисленное программирование
- •Ввод и вывод данных, оператор присваивания
- •Логические выражения: группа Boolean
- •Условный оператор: группа If
- •Оператор выбора
- •Цикл с параметром: группа For
- •Цикл с условием: группа While
- •Массивы
- •Функции и процедуры
- •Контрольные вопросы
- •Список литературы
- •Содержание
- •420015, Казань, к. Маркса, 68
Основные элементы управления в редакторе vba
Для просмотра модулей и работы с программным кодом вам необходимо использовать редактор Microsoft Visual Basic. Этот компонент предоставляет инструментальные средства, которые используются для создания новых модулей, просмотра содержимого существующих модулей, создания и редактирования исходного кода программ, разработки пользовательских диалоговых окон и выполнения других задач, относящихся к написанию и обслуживанию программ на VВА.
Независимо от того, работаете ли вы в Word или в Excel, редактор VBA запускается одним и тем же способом. Используйте для этого один из следующих приемов:
Выберите на ленте инструментов вкладку Разработчик, а на ней инструмент Visual Basic.
Нажмите сочетание клавиш Alt+F11.
Основное окно редактора VBA (рис.1) ничем не отличается от окон MS Office.
Верхняя строка – заголовок окна с именем самой программы Microsoft Visual Basic и через дефис именем документа, в котором создается программный код. Здесь же имеются системные кнопки управления окном, как во всех программах MS Office.
Ниже находится строка основного меню и панели инструментов, дублирующие наиболее часто повторяющиеся команды из меню. Более подробно по ним будет описано ниже.
Все остальное пространство занимает рабочая область, которая может разделяться на различные окна и панели. Их можно раскрывать или скрывать по мере надобности. Это панели:
проекта (Project) (в левой верхней части экрана) – содержит перечень объектов, входящие в документ создаваемой программы. На рис.1 видно, что имеются два проекта: это собственно наш рабочий документ (книга Excel), содержащий четыре объекта – листы книги (Лист1, Лист2, Лист3) и сама книга (Эта книга), и второй проект – надстройка Exp_fun.xla, что видно по ее расширению. По мере наполнения проекта там могут появляться новые объекты – программные модули, пользовательские формы и т.д. В заголовке панели имеются три кнопки, которые выполняют следующие функции: показывает программный код объекта, выводит на экран сам объект, если это возможно (это возможно только для пользовательских форм), и раскрывает или сворачивает дерево объектов;
Рис.1. Окно VBA
свойств объектов (Properties) (в левой нижней части экрана) – содержит перечень свойств выделенного объекта, в нашем случае здесь представлены свойства выделенного в проекте объекта Лист1. В заголовке панели имеется выпадающий список из включенных в данный объект его членов (members) – других объектов, на которые можно быстро перейти при их выборе. Все свойства объекта могут быть представлены в двух вариантах – по алфавиту (Alphabetic) или по категориям (Categorized) согласно имеющимся на этой панели закладкам;
коллекции объектов (Object browser) (справа вверху) – содержит библиотеку всех объектов, использующихся в среде VBA и самого приложения (в нашем случае это электронная таблица Excel). Здесь можно найти любой объект, познакомиться с его свойствами и получить более подробную информацию по каждому объекту, его свойствам, методам и событиям через систему помощи [F1]. Выбор объектов может быть организован через выбор нужной библиотеки (выпадающий список в верхней строке панели). Здесь можно выбрать нужную из них или все сразу All Libraries (все библиотеки), как показано на рис.1. Затем выбираем нужный объект в двух нижних списках: в списке классов (Classes) (наборов из нескольких объектов, объединенных в группу (Класс)) и списке членов класса (Members of …) самих объектов или их свойств. Можно найти нужный объект в поиске (вторая строка панели). Результаты поиска представляются в окне ниже. Выбрав нужный объект, можно увидеть все его свойства в нижних окнах;
исполнения (Immediate) (внизу слева) – окно, где можно немедленно выполнить команду VBA или даже нескольких команд;
локальных переменных (Locals) (внизу в центре) – окно, где автоматически выводится информация по всем описанным в программе переменным во время выполнения кода;
просмотра (Watches) (внизу справа) – окно, куда можно ввести выражение, которое будет вычислено, и результат будет выведен в нем;
собственно окно кода программы, которое обычно находится вместо коллекции объектов. Сюда вносится сам код программ (рис.2). В верхней строке окна имеются два выпадающих списка. Левый из них показывает область в коде модуля. В нем могут быть два значения: «General» – основная область и «Имя_объекта» (Worksheet, Workbook и UserForm) – область программ данного объекта. Правый список содержит обязательное значение «Declaration» – описание переменных, и список общих и вспомогательных процедур, расположенных в этой области кода. При выборе другого объекта в левом списке, правый будет содержать все программы, описывающие события для данного объекта. Данные списки позволяют быстро переходить к различным программам внутри модуля.
Все панели могут быть скрыты с помощью щелчка на кнопке с крестиком соответствующей панели. Чтобы отобразить какую-либо отсутствующую панель, следует открыть меню View (Вид), кликнуть на соответствующей строке выпавшего меню. Для ряда панелей имеются комбинации горячих клавиш для их быстрого вызова.
Рис.2. Окно кода программы
К
Рис.3. Окно вставки
процедуры
Sub имя ()
End Sub
Вам теперь необходимо ввести собственно код программы между этими строками.
Помните, что в именах идентификаторов (программ, переменных) не должно быть пробелов (их можно заменять подчеркиванием «_»). Они не должны начинаться с чисел и не могут совпадать с именами стандартных функций и служебных слов языка. Регистр в имени переменных не имеет значения. Если мы хотим, чтобы имя программы состояло из нескольких слов, то вместо пробела надо использовать знак соединения или каждое слово начинать с заглавной буквы. Примеры имени программы:
моя_программа
МояПрограмма
МyРrоgram
Мy_Рrogram
Между первой и последней строками шаблона набираются остальные операторы программы. При этом можно пользоваться привычными командами редактирования (как в текстовом процессоре Word), а также буфером обмена. Ввод строки оканчивается нажатием клавиши Enter.
Если для наглядности оператор нужно разместить на нескольких строках, то для переноса следует использовать комбинацию символов пробела и соединения « _» (после ввода этих символов надо нажать клавишу Enter). Если необходимо несколько операторов разместить на одной строке, то между ними надо поставить двоеточие «:».
Помните, что после завершения ввода строки происходит ее проверка и корректировка с вводом дополнительных пробелов.
Апостроф (запятая в верхней части строки) «’» означает, что следующая за ним информация (до конца строки) является комментарием, т.е. набором символов, который никак не влияет на выполнение программы. Если Вы готовите большую программу, то рекомендуется её комментировать, чтобы не забыть основной алгоритм и назначение используемых переменных.
Более подробно остановимся на основных командах меню:
F
Рис.4. Запрос на экспорт объекта
ile (Alt+F) – содержит команды работы с файлами, печати и закрытия пакета. Наибольший интерес вызывают команды Import (Импорт) и Export (Экспорт), которые позволяют сохранить программный код в текстовом файле, а затем загрузить его в другой проект. Это позволяет использовать наборы заранее созданных программных заготовок и форм в других проектах. Команда Remove (Извлечь) позволяет удалить выделенный объект из проекта. При ее выполнении задается вопрос об экспорте данных (рис.4). Если объект больше не нужен, его можно просто удалить, если он не нужен только в данном проекте, но может пригодиться в другом, его можно перед удалением экспортировать в файл, ответив на запрос «Да».
Edit (Alt+E) – содержит несколько групп команд, связанных с редактированием текста программы:
Краткая справка по командам и подменю меню Edit редактора VBA приведена в таблице. Там же можно видеть пиктограммы кнопок, которые присутствуют или могут присутствовать на панелях инструментов для ускоренного доступа к этим командам, равно как и сочетания клавиш, нажав на которые, можно выполнить данные команды.
Команда или подменю |
Кноп-ка |
Сочетание клавиш |
Описание |
Undo … (Отменить) |
|
Ctrl+Z |
Отмена выполненной команды. Иногда можно отменить ряд команд |
Redo … (Повторить) |
|
Нет |
Отмена последней команды Undo … |
Сut (Вырезать) |
|
Ctrl+X |
Вырезать выделенный фрагмент кода или объект и поместить в буфер обмена |
Сору (Копировать) |
|
Ctrl+C |
Копирование выделенного фрагмента кода или объекта в буфер обмена |
Paste (Вставить) |
|
Ctrl+V |
Вставка содержимого буфера обмена, например, в модуль (код) или форму (элемент формы) |
Clear (Очистить) |
|
Del |
Удаление фрагмента кода или элемента формы. При работе с кодом команда имеет название Clear (Очистить), а при работе с элементами форм отображается название Delete (Удалить) |
Select All (Выделить все) |
|
Ctrl+A |
Выделение всего программного кода в модуле или всех элементов на форме |
Find (Найти) |
|
Ctrl+F |
Команда поиска текстового фрагмента в модуле |
Find Next (Найти следующий) |
|
F3 |
Поиск и выделение следующего фрагмента текста или кода после первого найденного |
Replace (Заменить) |
|
Ctrl+H |
Поиск текста и замена его на другой. Оба текста (искомый и текст замены) указываются в диалоговом окне при выполнении команды |
Indent (Отступ) |
|
Таb |
Смещение строк выделенной части кода вправо |
Outdent (Выступ) |
|
Shift+Tab |
Смещение строк выделенной части кода влево |
List Properties| Methods (Список свойств /методов ) |
|
Ctrl+J |
Вывод списка свойств или методов для введенного объекта после ввода точки (.) в конце имени объекта |
List Constants (Список констант) |
|
Ctrl+Shift+J |
Выводится список допустимых констант для указанного объекта после ввода знака равенства (=) |
Quick Info (Быстрая справка) |
|
Ctrl+I |
Выводит список параметров для функций, процедур и других модулей программы при наведении курсора на имя этого модуля |
Parameter Info (Параметры) |
|
Ctrl+Shift+I |
Контролирует ввод необходимых входных параметров при заполнении имен фактических параметров после имени процедуры |
Complete Word (Завершить слово) |
|
Ctrl +Space |
Автоматическое завершение ввода ключевых слов. Выполняется только в том случае, если введено достаточное количество символов, позволяющих VBA идентифицировать это слово |
Bookmarks (Закладки) |
|
Нет |
Подменю работы с закладками. Содержит команды Установить / Снять закладку (Toggle Bookmark), перейить к следующей закладке (Next Bookmark), и к предыдущей (Previous Bookmark) и удалить все закладки (команда Clear All Bookmarks). |
Можно заметить, что первые две команды рассматриваемого меню (Undo и Redo, соответственно) отображены несколько необычно ‑ команды выделены серым цветом (это означает, что они недоступны), к тому же перед этими командами появилось слово Can't, что в переводе означает невозможно. Объясняется все просто ‑ поскольку в документе никакие операции с данными не производились, то и отменять нечего. В процессе работы, когда команды станут доступны, в соответствующей командной строке будет отображена не только сама команда, но и описание того действия, которое можно отменить или повторить.
View (Alt+V) – представлены команды и подменю, позволяющие настраивать внешний вид рабочего окна приложения Excel, перехода к подпрограммам и возврата к последней точке ввода текста.
Команда или подменю
Кнопка
Сочетание клавиш
Описание
Code (Код)
F7
Отображение окна редактирования программного кода
Object (Объект)
Shift+F7
Отображение объекта, выбранного в окне проекта Project Explorer
Definition (Определение)
Shift+F2
Команда перехода на подпрограмму с обращения к ней в программном коде
Last Position (Последняя позиция курсора)
Ctri+Shift+F2
Быстрый переход к предыдущему месту размещения курсора
Object Browser (Окно объекта)
F2
Отображение окна Object Browser для доступных на данный момент объектов
Immediate Window (Окно тестирования)
Ctrl+G
Отображение окна Immediate Window, полезного при отладке программных кодов. В него можно ввести программный код и выполнить его
Locals Window (Окно переменных)
Отображение окна Locals Window, используемого при отладке программного кода для отслеживания значения переменных
Watch Window (Окно просмотра)
Отображение окна отладки Watch Window для просмотра значения выражений
Call Stack (Стек вызова)
Ctrl+L
Просмотр стека вызова подпрограмм Call Stack в режиме отладки в момент остановки выполнения программы на закладке
Project Explorer (Окно проекта)
Ctrl+R
Отображение окна проекта Project Explorer
Properties Window (Окно свойств)
F4
Отображение окна свойств Properties Window
Toolbox (Элементы управления)
Отображение панели с элементами управления форм
Tab Order (Порядок перехода)
Отображение диалогового окна Tab Order, с помощью которого устанавливается порядок выполнения переходов (при нажатии клавиши Таb) между элементами формы
Toolbars (Панели инструментов)
Подменю содержит команды, позволяющие отображать: панель отладки Debug, панель редактирования Edit, стандартную панель инструментов Standard, панель формы UserForm и команду настройки панелей инструментов Customize
Microsoft Excel
Alt+F11
Команда перехода к приложению Excel. При этом редактор VBA остается открытым
Insert (Alt+I) – содержит команды вставки всех возможных объектов в проект VBA. Это модули, оконные формы и процедуры. Так же можно вставить фрагменты программных модулей из файла.
Команда или подменю
Кнопка
Сочетание клавиш
Описание
Procedure (Процедура)
Команда вставки новой процедуры в модуль
UserForm (Форма пользователя)
Команда добавления новой формы в проект
Module (Модуль)
Добавление нового модуля в проект
Class Module (Модуль класса)
Добавление в проект модуля класса
File (Файл)
Вставка в модуль файла, содержащего код VBA
Format (Alt+O) – содержит команды форматирования объектов на оконных формах, что существенно упрощает размещение этих объектов на форме и относительно других объектов.
Замечание. Не все команды этого меню активны. Причина в том, что открыт новый рабочий документ. В процессе написания программного кода и работы с соответствующими объектами доступ к командам будет получен. Это же замечание относится и к командам прочих меню, как описанных выше, так и тех, о которых речь еще будет идти далее.
Команда или подменю |
Кнопка |
Описание |
Align (Выровнять) |
|
Выравнивание объектов относительно друг друга. Выравнивание выполняется: по левому краю (Lefts), по центру (Centers), по правому краю (Rights), по верхнему краю (Tops), по центральной линии (Middles) и нижнему краю (Bottoms) и по базовой сетке (То Grid) |
Make Same Size (Установить размер) |
|
Подменю выравнивания размеров объектов позволяет для выбранных объектов сделать равными ширину (Width), высоту (Height) или оба размера (Both) |
Size to Fit (Размер по заполнению) |
|
Команда, которая устанавливает свойства автоматического выравнивания объекта под его содержание, что можно применить к окну ввода или вывода текстовой информации |
Size to Grid (Размер по сетке) |
|
Команда, которая устанавливает свойства автоматического выравнивания объекта по сетке |
Horizontal Spacing (Расстояние по горизонтали) |
|
Подменю изменения расстояния по горизонтали между выбранными объектами. Содержит команды: Make Equal (равное расстояние между объектами); Increase (увеличение расстояния между объектами на расстояние шага базовой сетки формы); Decrease (уменьшение расстояния между объектами на расстояние шага базовой сетки формы) и Remove (объекты сдвигаются по горизонтали друг к другу). Во всех случаях базовым считается объект, которому передан фокус (вокруг него рамка с белыми метками) |
Vertical Spacing Размер по вертикали) |
|
Подменю содержит команды для изменения расстояния по вертикали между выделенными объектами. Команды такие же, как и для предыдущего подменю, только теперь все это имеет место вдоль вертикали |
Center in Form (По центру формы) |
|
Подменю содержит команду выравнивания выделенных объектов относительно центра формы по горизонтали (Horizontally) и вертикали (Vertically) |
Arrange Buttons (Упорядочить кнопки) |
|
В подменю представлены две команды выравнивания кнопок в форме: по нижней (Bottom) и правой (Right) границе |
Group (Группировать) |
|
Команда группировки объектов |
Ungroup (Разгруппировать) |
|
Команда отмены группировки объектов |
Order (Порядок) |
|
Подменю содержит команды, позволяющие изменять порядок отображения перекрывающихся объектов в форме. Эти команды таковы: Bring To From (перемещение объекта на передний план), Send To Back (перемещение объекта на задний план), Bring Forward (перемещение объекта на один уровень вперед) и Send Backward (перемещение объекта на один уровень назад). Если выделить несколько объектов, то один из них будет иметь прозрачные угловые курсоры, а у остальных - черные. Объект с прозрачными курсорами является активным. |
Debug (Alt+D) – набор команд для отладки программного кода.
Команда или подменю
Кноп-ка
Сочетание клавиш
Описание
Compile VBAProject (Компилировать)
Команда компилирования проекта
Step Into (Входить)
F8
Команда пошагового выполнения кода с исполнением внутренних процедур
Step Over (Перешагивать)
Shift+F8
Команда пропуска трассировки подпрограмм, просто происходит ее вычисление. Если известно, что подпрограмма работает правильно, то поиск ошибок в ней не нужен, и при трассировке ее можно пропустить из пошагового исполнения
Step Out (Выполнить до конца)
Ctrl+Shift+F8
Выполнение оставшихся команд процедуры. Если вы убедились, что код подпрограммы работает правильно и дальнейшее его исполнение в пошаговом режиме просто трата времени, надо воспользоваться этой командой
Run to Cursor (Выполнить до курсора)
Ctrl+F8
Выполнение команд до строки, в которой размешен курсор
Add Watch (Добавить для просмотра)
Команда отображения диалогового окна Add Watch, где можно указывать переменные и выражения, значение которых проверяется в процессе выполнения программного кода
Edit Watch (Редактировать просматриваемые)
Ctrl+W
Команда отображения диалогового окна Edit Watch, в котором можно редактировать переменные и выражения, отслеживаемые в процессе выполнения программного кода
Quick Watch (Быстрый просмотр)
Shift+F9
Отображение диалогового окна Quick Watch с текущим значением как выбранной переменной, так и целого выражения
Toggle Breakpoint (Установить точку остановки)
F9
Выбор метки (точки) остановки выполнения кода
Clear All Breakpoints (Удалить все точки остановок)
Ctrl+Shirf+F9
Удаление всех меток остановки выполнения кода
Set Next Statement (Определить следующую инструкцию)
Ctrl+F9
Команда определения следующей выполняемой команды. Позволяет менять порядок выполнения команд исходного программного кода
Show Next Statement (Показать следующую инструкцию)
Команда выделения следующей выполняемой строки кода
Run (Ctrl+R) – набор команд для выполнения программного кода.
Команда или подменю |
Кнопка |
Сочетание клавиш |
Описание |
Run Macro (Запустить) |
|
F5 |
Команда запуска макроса на выполнение |
Break (Приостановить) |
|
Ctrl+Break |
Приостановка выполнения макроса |
Reset (Сброс) |
|
|
Сброс значений всех переменных к исходным значениям |
Design Mode (Режим разработки) |
|
|
Переход в режим разработки и выход из этого режима (повторное выполнение команды) |
Зафиксировав строку команды (Design Mode), вы указываете системе, что вы проектируете свою форму, и нет необходимости выполнять все события, которые в этот момент могут возникать на форме;
Tools (Ctrl+T) – содержит команды настройки системы программирования.
Команда или подменю |
Кнопка |
Описание |
References (Ссылки) |
|
Команда включения ссылок на программы, которые будут нужны в данном проекте. Например, мы хотим использовать текстовый процессор Word, который будет вызываться как объект в нашем проекте, тогда его надо найти в списке зарегистрированных программ и поставить галочку. После этого в проекте можно вызвать Word как объект, и увидеть все его свойства и методы |
Additional Controls (Дополнительные элементы управления) |
|
Отображается диалоговое окно Additional Controls c элементами управления, которые можно добавлять в меню Тооls |
Macros (Макросы) |
|
Открывается диалоговое окно Macros, в котором можно создавать, редактировать, запускать и удалять макросы |
Options (Параметры) |
|
В результате выполнения команды открывается диалоговое окно Options с четырьмя вкладками (Editor, Editor Format, General и Docking) (рис.4). С помощью этого окна можно задавать базовые настройки редактора |
VBAProject Properties (Свойства проекта VBA) |
|
Команда настройки свойств проекта, которая позволяет задать имя проекта, файлы помощи, которые нужно подключать к проекту, и закрыть проект паролем |
Digital Signature (Электронные подписи) |
|
Отображается диалоговое окно Цифровая подпись, в котором задается цифровая подпись для проекта |
К
Рис.5. Окно настроек,
закладка Редактор
Закладка (Editor) содержит настройки общей системы ввода программного кода. Здесь можно указать необходимость показа информации по параметрам процедур. Проводить контроль при вводе формальных параметров. Вывод свойств объекта, после ввода точки в его имени и показ констант при вводе знака равенства после имени свойства объекта. Все эти вспомогательные функции можно здесь отключить, сняв галочки перед ними, и вызывать эти функции принудительно соответствующими командами меню View. Здесь же задается размер табулятора, который определяет отступ в программном коде.
Закладка (Editor Format) настраивает форматирование окна с кодом программы, здесь задается имя, размер и начертание шрифта, а также выделение цветом различных объектов (служебные слова, идентификаторы) и состояний выполнения программного кода (закладки, точки останова, исполняемая команда и т.д.). Обычно нет необходимости изменять эти настройки, так как они хорошо продуманы.
Закладка (General) содержит ряд настроек, которые задают размеры сетки для форм пользователя и необходимость привязки объектов к ней, режимы редактирования, срабатывания на ошибки и компиляции программы.
Закладка (Docking) определяет какие из окон и панелей должны быть привязаны к определенным местам рабочей области экрана или располагаться поверх рабочей области экрана.
Как несложно заметить, для команд меню Tools не предусмотрены комбинации клавиш, посредством которых эти команды вызываются. Принимая во внимание специфику выполняемых этими командами действий, можно порекомендовать в том случае, если настройки системы часто меняются, выносить на панель инструментов кнопки для соответствующих команд.
Замечание. Здесь еще раз хочется напомнить, что даже если для команды не указана специальная пиктограмма, кнопку все равно можно разместить на панели инструментов. Делается это точно так же, как и в процессе настройки панелей инструментов приложения Excel.
Add-Ins позволяет включать Add-In объекты в проект. В этом меню находится всего одна команда, которая приводит к отображению диалогового окна Add-Ins Маnаgеr. Это окно позволяет регистрировать, загружать или выгружать и определять поведение дополнений.
Windows (Ctrl+W) – набор команд управления окнами, которые являются стандартными во всех приложениях MS Office. С их помощью можно различными способами расположить окна и выбрать любое из них.
Help (Ctrl+H) – команды вызова системы помощи и комментарии к пакету.
Теперь кратко рассмотрим кнопки на панелях управления. Они дублируют основные команды меню. Панелей всего четыре:
первая Стандартная (Standard) содержит основные команды работы с файлами, редактирования, поиска и т.п. Она обычно расположена под строкой меню, однако при помощи мышки ее можно перетаскивать в другие области окна VB;
вторая панель Редактирование (Edit) включает команды работы с кодом и установки различных закладок. Команды простейшего текстового редактора: копирование и перемещение текста в буфер обмена, вставка текста из буфера, поиск и/или замена слов и фраз в тексте программы и т.д.;
третья панель Отладка (Debug) – команды по отладке кода;
четвертая панель Пользовательская форма (UserForm) содержит команды создания пользовательских окон.
Как в любом пакете имеется команда Настройка… панелей инструментов, которая становится доступной в контекстном меню панели инструментов или строки меню. С ее помощью можно изменить набор кнопок любой из панелей. Для выяснения назначения любой кнопки достаточно просто зафиксировать на ней курсор и система выведет текстовый комментарий по команде, которая привязана к этой кнопке.
