В 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, элементы управления которой соответствуют аргументам пользовательской функции ШТРАФ.