
- •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
- •Контрольные вопросы
Функции пользователя
В Microsoft Office можно создавать пользовательские функции на языке VBA. Для этих функций определяется набор параметров (аргументов) и алгоритм вычисления. Аргументы функции имеют тип данных, значения аргументов задаются или извлекаются из хранимых данных в момент вычислений функции. Результат пользовательской функции имеет определенный тип данных и может использоваться в качестве аргумента в выражениях.
Наиболее часто пользовательские функции разрабатываются для электронной таблицы Excel. Они оформляются в программном модуле как Function. Пользовательские функции можно собрать в одной рабочей книге, для доступа к которой из других рабочих книг делается ссылка в окне Macros. Если функции должны быть доступны при любом запуске Excel, их следует сохранить в личной книге макросов.
При создании пользовательских функций Excel следует учитывать ряд ограничений. В функции пользователя нельзя:
задавать свойства объектов;
вставлять, удалять и форматировать ячейки таблицы;
изменять содержимое ячеек;
перемещать, удалять, добавлять и переименовывать рабочие листы;
создавать, открывать, удалять или закрывать рабочие книги.
Пользовательские функции БД Access также записываются в виде процедуры Function в составе стандартного модуля проекта, они доступны через построитель выражений, при выборе раздела Функции, Имя БД.
Пример 20
Пользовательская функция Excel – ШТРАФ, аргументы СУММА – сумма платежа, ЗАДЕРЖКА – срок задержки платежа. Если задержка платежа до 3 дней — штраф 2% от суммы платежа, если задержка от 3 до 7 дней – штраф 5% от суммы платежа, если задержка свыше 7 дней — штраф 10% от суммы платежа.
Public Function ШТРАФ(СУММА As Variant, _
ЗАДЕРЖКА As Variant) As Variant
If ЗАДЕРЖКА <= 3 Then
ШТРАФ = СУММА * 0.02
ElseIf ЗАДЕРЖКА <= 7 Then
ШТРАФ = СУММА * 0.05
Else
ШТРАФ = СУММА * 0.1
End If
End Function
На рис. 13.4 представлена экранная форма для ввода аргументов и вычисления результата функции, созданная Excel автоматически. Эта функция доступна в формулах рабочего листа. Параметры функции могут задаваться непосредственно в поле окна функции, указываться в виде ссылки на ячейки таблицы.
Рис.13.4
Можно создать пользовательскую форму — UserForm, элементы управления которой соответствуют аргументам пользовательской функции ШТРАФ.
Макросы Microsoft Office
Макрос — набор команд, выполняемых как единое целое. Наиболее часто макросы создаются для автоматизации выполнения трудоемких, рутинных операций обработки данных (редактирования, поиска/замены, форматирования и прочее), а также для автоматизации повтора последовательных действий.
Различают языковые (на языке VBA) и клавишные макросы. Клавишные макросы создаются с помощью специального средства — макрорекордера в интерактивном режиме работы пользователя с командами меню. Все клавишные макросы имеют адекватное представление в виде процедур Sub на языке VBA. Языковые макросы — тексты процедур типа Sub, непосредственно создаваемые в редакторе VBA. Для начала освоения средств автоматизации рекомендуется сначала создавать клавишные макросы, а затем их оптимизировать в среде редактора VBA.
Клавишные макросы создаются во всех программах Microsoft Office, кроме Access (вкладка Макросы вызывает конструктор макросов, макрос Access — набор макрокоманд с параметрами).
В клавишном макросе запоминается нажатие клавиш, выбранные команды меню, манипуляция мышью в момент записи макроса.
Действия, проделанные в окне документа с помощью мыши — перемещение курсора, копирование и перемещение объектов и т.п. – не записываются в клавишном макросе.
Создание клавишного макроса можно временно приостанавливать и затем возобновлять. Подготовленный клавишный макрос автоматически транслируется на язык VBA в виде процедуры или программного модуля. Технология создания клавишных макросов (Word, Excel, PowerPoint) типовая. Команда Сервис, Макрос, Начать запись вызывает диалоговое окно Запись макроса (рис. 13.5), в котором следует указать:
имя макроса — непрерывная последовательность символов, не превышающая 80 знаков3;
способ вызова макроса — кнопка на панели инструментов или «горячие клавиши» типа Ctrl + <буква> или Ctrl+Shift+<буква> (нельзя использовать цифры или специальные символы: «@», «#» и др.).;
сфера действия макроса – шаблон документа, только документ;
описание макроса — до 255 символов4 (если макросу назначена кнопка панели инструментов, описание выполняет роль всплывающей подсказки).
Рис. 13.5
Для собственно записи макроса нажимается кнопка ОК, на экран выводится панель инструментов Остановить запись. С этого момента выполняется запись «тела» макроса — последовательности действий, которая будет возобновляться при запуске макроса.
Запуск макросов в приложениях осуществляется с помощью команды Сервис, Макрос, Макросы. Кнопка Выполнить выполняет выбранный макрос5. Макросы можно редактировать — кнопка Изменить (Edit), удалять — кнопка Удалить (Delete).
Макросы могут содержать вирусы, которые активизируются при открытии документов или использовании шаблонов. Для защиты от макровирусов макросы могут иметь специальную цифровую подпись — электронную печать (код разработчика), подтверждающую содержимое макроса и отсутствие макровирусов. В ряде программ Microsoft Office можно управлять уровнями безопасности от макровирусов. Например, в текстовом редакторе Microsoft Word команда Сервис, Макрос, Безопасность позволяет на вкладке Уровень безопасности выбрать уровень защиты:
высокий — запуск только подписанных макросов из надежных источников;
средний — запуск макросов по указанию пользователя;
низкий — запуск всех макросов.