Функции, определяемые пользователем

И ПРОЦЕДУР

СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ

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

Существует два вида процедур:

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

· Подпрограмма – представляет собой определенный набор операторов, составленный пользователем и расположенный отдельно от основной программы.

Отличие функции от подпрограммы состоит в том, что:

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

– имя функции должно иметь спецификатор типа для определения типа самой функции.

Функция-процедура (или функция) – это особый вид процедуры VBA, возвращающей результат. Создание новой функции состоит из написания программных операторов, которые определяют:

· аргументы, используемые функцией;

· действия, выполняемые функцией;

· значение, возвращаемое функцией.

Функция-процедура имеет следующий синтаксис:

[Private | Public] [Static] Function Name([Arglist]) [As Type]

'комментарий, описывающий функцию

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

[Name = expression]

[Exit Function]

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

[Name = expression]

End Function

Public – Указывает, что процедура Function доступна для всех других процедур во всех модулях;

Private – Указывает, что процедура Function доступна для других процедур только того модуля, в котором она описана;

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

Name – имя, выбранное для этой функции. При написании имен функций необходимо соблюдать те же правила, что и при написании имен других идентификаторов в VBA: они должны начинаться с буквы, не могут содержать пробелов или каких-либо символов арифметических, логических операторов или операторов отношения и не могут дублировать ключевые слова VBA.

Arglist –список ее аргументов функции (является необязательным).

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

Name = expressionпредставляет присваивание функции, которое указывает VBA, какое значение должна возвращать функция.

Exit Function приводит к немедленному выходы из функции

Функция может иметь аргументы, а может не иметь. Все зависит от конкретной ситуации. Если функция не имеет аргументов в объявлении функции необходимо использовать круглые скобки. Например, можно написать функцию-процедуру, возвращающую имя файла, содержащего текущую рабочую книгу, так, чтобы можно было вставлять имя файла в ячейку рабочего листа. Такой функции не нужны аргументы, ей не требуется никакая внешняя информация для выполнения работы, и она будет иметь подобное объявление:

Function ThisBookName()

При объявлении функции-процедуры необходимо указывать имя каждого аргумента, передаваемого функции; имена аргументов в списке следует отделять друг от друга запятой и писать в соответствии с правилами, применяемыми к любому идентификатору VBA. Имена, предоставляемые пользователем в списке аргументов, подобны переменным: они ссылаются на значение. Имена аргументов имеют ту же область действия, что и переменные, объявляемые локально в функции-процедуре, то есть недоступны вне функции-процедуры, в списке аргументов которой они объявляются.

Строка Name = expression представляет присваивание функции. Присваивание функции указывает VBA, какое значение будет возвращать функция. Присваивание функции использует имя функции-процедуры и присваивает ему значение, как если бы это была переменная. Функции-процедуры могут не иметь совсем или иметь один или несколько различных операторов присваивания функции.

Пример 1. Функция-процедура LenTrim, возвращающая дину строки без начальныхех или конечных пробелов

Function LenTrim(tStr) ' Определение функции

LenTrim = Len(Trim(tStr)) ' Возвращаемое значение

End Function

В строке 1 содержится объявление функции LenTrim,которое начинается с обязательного ключевого слова Function. После имени функции открываются круглые скобки, что указывает VBA на начало списка аргументов. Далее следует имя аргумента (tStr). Имя аргумента сообщает VBA, что функции-процедуре при ее вызове должен передаваться один аргумент.

Строка 2 функции LenTrim – это строка, которая выполняет всю работу функции и также содержит аргумент функции для LenTrim. При вычислении выражения Len(Trim(tStr)) VBA принимает строку, полученную посредством аргумента tStr, и передает ее VBA-функции Trim для удаления начальных или конечных пробелов. Результат функции Trim используется как аргумент функции Len. Затем VBA присваивает результат функции Len имени функции LenTrim. LenTrim возвращает длину строки аргумента, исключая начальные или конечные пробелы.

Наконец, в строке 3 функция заканчивается ключевыми словами Еш Function. После выполнения этой строки VBA возвращается к оператору процедуры, вызвавшему функцию LenTrim, и вставляет результат функции LenTrim в этот оператор в том месте, где появляется имя функции.

Для вызова функции LenTrim, используется оператор, подобный следующему:

MsgBox LenTrim(" Excel 2000 ")

В этом операторе строка аргумента имеет четыре начальных и четыре ко нечных пробела, и длина строки (как указывает VBA-функция Len) равна 18 символам. Функция LenTrim сообщает длину строки без начальных и конечных пробелов; вышеуказанный оператор отображает число 10.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: