- •266Лекция 13. Язык программирования Visual Basic for Application (vba)
- •Лекция 13. Язык программирования Visual Basic for Application (vba)
- •Типы данных
- •Инструкции vba
- •Имена vba
- •Процедуры vba
- •Подпрограмма Sub
- •Функция Function
- •Функции ввода-вывода данных и сообщений
- •Функция MsgBox
- •Функция InputBox
- •Управляющие конструкции vba
- •Проверка условия — If
- •Select Case
- •For Next
- •While…Wend
- •Do …Loop
- •Функции пользователя
- •Макросы Microsoft Office
- •Макросы Word
- •Макросы Excel
- •Макросы Access
- •Контрольные вопросы
Процедуры vba
Процедура — именованный набор описаний и инструкций VBA, оформленных в виде программного модуля. Различают следующие типы процедур: подпрограмма Sub, функция Function, свойство Property.
Подпрограмма Sub
Подпрограмма Sub — набор инструкций для реализации алгоритма обработки данных2. Процедура-подпрограмма Sub имеет структуру :
Sub имя ([аргументы])
Инструкции
Exit Sub
Инструкции
End Sub
Аргументы позволяют передавать в процедуру требуемые значения. Процедура не может содержать внутри себя другую процедуру, модуль может содержать несколько процедур. Оператор Exit Sub обеспечивает немедленный выход из подпрограммы.
Вызов процедуры Sub из другой процедуры выполняется с помощью инструкции:
Call имя {[параметры]}
Можно не указывать оператор Call, если в описании процедуры Sub используется список аргументов, то ее вызов осуществляется с помощью списка параметров, заменяющих эти аргументы. Если аргументов больше 1 и используется оператор Call, аргументы заключаются в круглые скобки.
Функция Function
Функция Function — набор инструкций, обеспечивающий выполнение обработки и возврат значения определенного типа (число, текст, логическое и т.п.).
Функции используются в вычисляемых выражениях, имеют структуру:
Function имя ([аргументы]) [As тип]
Инструкции
имя = выражение
[Exit Function]
Инструкции
End Function
Параметр As тип позволяет явно задать тип данных, который возвращает функция. Одна из инструкций должна присвоить вычисленное значение имени функции (имя = выражение). Оператор Exit Function обеспечивает немедленный выход из функции. Нельзя включать процедуру функцию в состав процедуры подпрограммы или другой функции. Вызов Function выполняется по аналогии со встроенными функциями; при построении выражений соответствующие пользовательские функции доступны для выбора.
Процедура Property — набор инструкций, обеспечивающий обработку свойств объекта.
Функции ввода-вывода данных и сообщений
Ввод-вывод данных и сообщений относится к наиболее часто используемым инструкциям. Встроенные функции VBA обеспечивают ввод-вывод сообщений или данных в интерактивном режиме работы приложения.
Функция MsgBox
Функция MsgBox выводит диалоговое окно, содержащее сообщение пользователю. Осуществляется вывод сообщения и значения переменной, свойства объекта; предлагается на выбор нажатие одной из кнопок, код которой запоминается.
Синтаксис функции MsgBox:
MsgBox(prompt[, buttons][,title][,helpfile,context])
prompt — обязательный параметр, строка текста, выводимая в качестве сообщения пользователю, максимальная длина текста — 1024 символа; для разделения строк можно вставлять аналог символов-разделителей Chr(13) — перевод каретки, Chr(10) – заполнитель строки или их комбинации;
buttons – числовой эквивалент типа кнопки, графического значка окна, а также кнопки, используемой по умолчанию. Задается как сумма числовых значений элементов (табл. 13.4);
title – текст заголовка диалогового окна;
helpfile – имя файла справки;
context – число, определяющее номер соответствующего раздела справочной системы.
Функция MsgBox с двумя и более аргументами используется только в выражениях. Если какие-либо аргументы функции отсутствуют, ставятся запятые.
Таблица 13.4
Кнопка |
Значение |
Описание |
VbOKOnly |
0 |
Кнопка OK |
VbOKCancel |
1 |
Кнопки OK, Отмена |
Продолжение таблицы 13.4 | ||
vbAbortRetryIgnore |
2 |
Кнопки Стоп, Повтор, Пропустить |
VbYesNoCancel |
3 |
Кнопки Да, Нет, Отмена |
VbYesNo |
4 |
Кнопка Да, Нет |
VbRetryCancel |
5 |
Кнопка Повтор, Отмена |
VbCritical |
16 |
Кнопка ОК и значок критического сообщения |
VbQuestion |
32 |
Кнопка ОК и значок предупреждения (вопроса) |
vbExclamation |
48 |
Кнопка ОК и значок восклицания |
vbInformation |
64 |
Кнопка ОК и значок информационного сообщения |
vbDefaultButton1 |
0 |
Выбор первой кнопки по умолчанию |
vbDefaultButton2 |
256 |
Выбор второй кнопки по умолчанию |
vbDefaultButton3 |
512 |
Выбор третьей кнопки по умолчанию |
vbDefaultButton4 |
768 |
Выбор четвертой кнопки по умолчанию |
vbApplicationModal |
0 |
Модальное окно, пользователь должен ответить на сообщение для продолжения работы |
vbSystemModal |
4096 |
Системное модальное окно, приостановка всех приложений до получения ответа от пользователя |
vbMsgBoxHelpButton |
16384 |
Кнопка Справки |
VbMsgBoxSetForeground |
65536 |
Выводит окно сообщений |
vbMsgBoxRight |
524288 |
Текст выровнен вправо |
vbMsgBoxRtlReading |
1048576 |
Вывод текста справа налево |
Пример 4
Запрос на продолжение работы (рис. 13.1). Код нажатой кнопки присвоить переменной Response.
Рис.13.1
Фрагмент программного кода:
Msg = "Продолжить работу?"
button = vbYesNo + vbCritical + vbDefaultButton2
' Критическое сообщение, по умолчанию — кнопка Нет
Title = "Пример функции MsgBox"
Response = MsgBox(Msg, button, Title)
Msgbox Response ’вывод кода нажатой кнопки
В другом варианте использования функции MsgBox значение кода нажатой кнопки не присваивается переменной. Диалоговое окно содержит три кнопки (рис. 13.2).
Рис. 3.2. Диалоговое окно функции Msgbox (3 кнопки)
Фрагмент программного кода:
MsgBox «Строка текста для вывода», vbQuestion + _ vbAbortRetryIgnore, «ОГЛАВЛЕНИЕ»