
- •Использование visual basic for applications для разработки приложений в ms office
- •Введение
- •1. Общие принципы ооп
- •2. Визуальное программирование. Событийно-управляемое программирование
- •3. Структура программы и иерархия классов в office
- •4. Интегрированная среда разработки vba
- •4.1. Окна интегрированной среды
- •4.2. Меню
- •4.2.1. Меню Файл
- •4.2.2. Меню Вид
- •4.2.3. Меню Вставка
- •4.2.4. Меню Формат
- •4.2.5. Меню Отладка
- •4.2.6. Меню Запуск (Run)
- •4.2.7. Меню Сервис (Tools)
- •4.2.8. Пример создания простейшей формы
- •5. Язык vba, написание программного кода
- •5.1. Общие элементы синтаксиса, операторы
- •5.1.2. Арифметические операторы
- •5.1.3. Оператор конкатенации &
- •5.1.4. Логические операторы
- •5.1.5. Комментарий
- •5.2. Функции, процедуры, макросы, обработчики событий
- •5.2.1. Процедуры
- •5.2.2. Функции
- •5.2.3. Функции MsgBox и DialogBox
- •InputBox (подсказка [, заглавие ] [, по_умолчанию ] [, х_поз][ , у_поз][ , help_file, контекст]).
- •5.2.4. Еще один способ вызова процедуры или функции
- •5.3. Объявление переменных, типы переменных
- •5.4. Преобразованиеданных и типов данных
- •5.5. Массивы
- •5.6. Константы
- •5.7. Область видимости и время жизни переменных, констант и процедур
- •5.7.1. Управление областью видимости
- •5.7.2. Пример создания программного кода формы
- •5.8. Инструкции vba
- •5.8.1. Инструкции присваивания Let и Set
- •5.8.2. Инструкции циклов
- •5.8.3. Инструкции принятия решений
- •6. Создание графического интерфейса с помощью стандартных элементов диалога
- •6.1. Создание формы и размещение в ней элементов управления
- •6.1.1. Объектная модель библиотеки ms Forms
- •6.1.2. События форм и элементов управления
- •6.2. Элементы управления
- •6.2.1.Label (Надпись)
- •6.2.2.TextBox (Поле)
- •6.2.3.RadioButton (Переключатели или радиокнопки)
- •6.2.4.CheckBox (Флажок) и Toggle Button (Выключатель)
- •6.2.5.Frame (Рамка)
- •6.2.6.ListBox (Список)
- •6.2.7.ComboBox (Поле со списком)
- •6.2.14.Свойства элементов управления
- •7. Создание приложений для ms excel
- •7.1. Структура проекта
- •7.2. ОбъектApplication
- •7.3. Работа с книгами
- •7.4. Работа с рабочими листами
- •7.5. Работа с ячейками
- •8. Создание приложений для ms word
- •8.1. Структура проекта
- •8.2. ОбъектApplication
- •8.3. Работа с документами
- •8.4. Работа с абзацами
- •8.5. Работа с текстом
- •8.5.1. Объект Range
- •8.5.2. Объект Selection
- •9. Задания для самостоятельной работы
- •9.1. Создание графического интерфейса
- •9.2. Написание программного кода
- •9.3. Создание приложения дляWord
- •9.4. Написание функции и процедуры
- •9.5. Создание приложения дляExcel
- •Библиографический список
5.2. Функции, процедуры, макросы, обработчики событий
В VBA программы состоят из набора процедур. Все макросы и обработчики событий – это процедуры. Кроме того, процедура может быть ни тем и ни другим, а может просто выполнять какую-то последовательность действий при своем вызове. Любая процедура может вызывать в процессе своей работы другие процедуры.
Каждый модуль программы состоит из одной или нескольких процедур. В VBA предусмотрены два их вида:
процедуры-подпрограммы, которые обычно называются просто процедурами и обозначаются ключевым словом Sub;
процедуры-функции (Function), называемые просто функциями.
Основное назначение процедуры – выполнение определенной последовательности действий, в то время как функция предназначена для вычисления значения по заданным параметрам.
5.2.1. Процедуры
Для начала рассмотрим процедуры-подпрограммы. Заметим, что и макрос, и обработчик события представляют собой именно процедуру-подпрограмму. Тело процедуры-макроса формируется автоматически при выполнении записи макроса. Как правило, программный код процедуры-подпрограммы имеет следующий вид:
Sub Имя_процедуры (Список формальных параметров)
Тело процедуры, состоящее из некоторого числа операторов
End Sub
Здесь Имя_Процедуры задает ее название, по которому она может быть впоследствии вызвана, т. е. выполнена. Список формальных параметров определяет список параметров, которые будут передаваться процедуре при вызове и использоваться в ее теле. Тело процедуры собственно и составляет ее суть и определяет последовательность действий, ею выполняемых. Признак конца процедуры – ключевое слово End Sub.
Рассмотрим более подробно способы передачи параметров процедуре. Ее общий синтаксис таков:
[Optional] [ByVal|ByRef] [ParamArray] Имя [( )] [Asтип] [ = значение_по_умолчанию].
Примечание. Здесь использованы следующие стандартные обозначения, используемые как в справочной системе по VBA, так и в подавляющем большинстве книг, посвященных этой тематике.
Элемент, заключенный в квадратные скобки [], является необязательным и при описании может быть опущен. Сами квадратные скобки в программе не пишутся.
Два слова, разделенных вертикальной чертой( |) могут быть использованы по выбору—либо одно, либо другое.
Ключевое слово Optional предназначено для передачи в процедуру значений аргументов, заданных по умолчанию. Это означает, что аргументы не обязательны при вызове процедуры (они могут отсутствовать либо принимать значения, заданные по умолчанию). Параметры с ключевым словом Optional должны находиться в конце списка формальных параметров.
При описании параметра с ключевым словом ParamArray ему ставится в соответствие массив аргументов, сам параметр должен иметь тип Variant. Подробнее о массивах и типах переменных рассказано ниже.
Ключевые слова ByVal и ByRef определяют способ передачи фактического параметра в процедуру. Ключевое слово ByVal означает, что фактический параметр передается по значению, и процедура не может изменить значение такого параметра при выполнении. Ключевое слово ByRef использует передачу параметра по ссылке, что позволяет процедуре изменить значение передаваемой переменной. Далее задается имя переменной и ее тип.
Ниже приведен пример процедуры, выполняющей вычисление площади прямоугольника.
Sub RectArea ( ByVal A As Single, ByVal B As Single, _ ByRef Area As Single)
Area = A*B End Sub
Несколько важных замечаний. В VBA каждый оператор (в том числе и оператор описания процедуры) должен быть записан в одной строке. Если же места в строке для него не хватает, то он может быть перенесен в следующую, но обязательно после символа переноса, представляющего собой совокупность двух знаков (пробел, подчеркивание).
Тип переменной Single указывает на то, что переменная может принимать любое вещественное значение. В написанной процедуре переменные А и В передаются по значению, так как в процессе работы процедуры их значения изменяться не должны, переменная Area передается по ссылке – ее значение как раз и изменяется (она становится равной произведению А и В).
Вызов процедуры осуществляется по имени и списку параметров, которые могут быть заключены в круглые скобки. Элементы, объявленные с ключевым словом Optional, при вызове процедуры указывать не обязательно. Например, нашу процедуру можно вызвать так:
RectArea Value1, Value2, Value3,
или
RectArea (Value1, Value2, Value3).
Как видно, имена фактических параметров вовсе не обязательно должны совпадать с именами формальных аргументов, придуманных в описании процедуры.