Создание пользовательских функций

Пользовательская функция представляет собой самостоятельную часть кода программы, которая имеет имя и содержит аргументы (иногда аргументы могут отсутствовать).

Создание пользовательских функций – это одна из наиболее простых задач, которые позволяет решать VBA.С пользовательскими функциями можно работать при помощи Мастера функций так же, как и с встроенными. Мастер функций помещает имена созданных функций в категорию «Определенные пользователем». При вызове пользовательской функции список передаваемых функции аргументов должен по количеству и типу соответствовать списку, заданному в ее описании.

Для того, чтобы построить пользовательскую функцию, следует выбрать команду меню Сервис – Макрос – Редактор Visual Basic. Затем выполнить команду Вставка – Модуль (Insert – Module). После этого в окне программного кода модуля следует ввести текст функции. Доступные программные модули отображены в окне диспетчера проекта (Project Explorer).

При написании программного кода на языке VBA следует учитывать следующие правила:

- каждая инструкция должна располагаться на отдельной строке. Если возникает необходимость перенести инструкцию на следующую строку, в конце строки следует указать сочетание символа пробела и знака «нижнее подчеркивание»;

- возможно не более семи продолжений одной и той же строки, сама строка не должна содержать более 1024 символов;

- запрещается разделять переносом строковые константы, идентификаторы переменных и т.п. конструкции;

- чтобы разместить в одной строке несколько программных инструкций, их разделяют двоеточием.

Комментариииспользуются для добавления в текст программы пояснительного текста, который не является исполняемой частью программного кода, а служит для пояснения отдельных фрагментов этого кода. Комментарий начинается с символа апострофа () или ключевого слова Rem. Компилятор игнорирует текст программы от начала комментария до конца строки. Таким образом, комментарии позволяют также временно предотвращать выполнение отдельных участков кода при отладке программы.

Основные операторы языка VBA.

Оператором называют синтаксическую единицу языка программирования, которая используется в программе для выполнения отдельного предписания. Операторы подразделяются на две категории – алгоритмические и функциональные.

Алгоритмические операторы используются для организации последовательности выполняемых пользователем действий. Важнейшие из них – операторы безусловного перехода, условные операторы и операторы циклов.

Функциональные операторы – это встроенные в язык функции и процедуры, с помощью которых производятся важные и распространенные действия, такие, как ввод данных, действия над числами.

Любая программа состоит из последовательности операторов, которые записываются в соответствии со строгими синтаксическими правилами.

Как отмечалось выше, функции пользователя размещаются в специально отведенной части VBA-проекта - модуле.

Синтаксис функции пользователя:

Publuc Function Имя ([СписокАргументов]) [As Тип]

[Инструкции]

[Имя = Выражение]

[Exit Function]

[Инструкции]

[Имя = Выражение]

End Function

Ключевое словоPublic указывает, что функция доступна на всех рабочих листах и во всех модулях проекта.

Тип - один из встроенных (Byte, Boolean, Integer, Long, Single, Double, Currency, Decimal, Date, String, Variant) или определенных пользователем типов.

Конструкция Exit Function приводят к принудительному немедленному завершению функции.

Синтаксис элемента СписокАргументов:

[Optional] ByVal [ParamArray] ИмяПерем[()][As Тип][= поУмолч]

Ключевое слово Optional указывает, что аргумент является необязательным и может быть опущен. Все последующие аргументы в списке аргументов должны быть также описаны с помощью ключевого слова Optional и иметь тип Variant. Если используется параметр ParamArray, необязательные аргументы недопустимы.

Инструкция ByVal определяют способ передачи аргумента в тело функции (по значению).

Конструкция ParamArray позволяет задавать произвольное количество аргументов. Используется для описания только последнего элемента в списке аргументов. Обработка произвольного количества элементов осуществляется с помощью инструкции For…Each…Next.

При работе с необязательными аргументами следует использовать функцию IsMissing(Аргумент), которая возвращает значение True, если указанный параметр был опущен, и False - в противном случае. Для необязательного параметра можно задавать значение по умолчанию (поУмолч), которое присваивается переменной, если аргумент отсутствует.

Пример 1. Функция для вычисления площади треугольника по формуле Герона. Аргументы a, b, c – длины сторон треугольника.