Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Инф_11-12.docx
Скачиваний:
13
Добавлен:
25.12.2018
Размер:
6.65 Mб
Скачать

Функции

Мы с вами уже сталкивались с встроенными (стандартными) функциями VBA. Это sin(), InputBox(())…А сейчас мы поговорим о функциях, которые сможем создавать сами. Это пользовательские функции.

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

Текст функции записывается в разделе General окна программного кода листа Excel, в этом случае она будет доступна во всех процедурах на данном листе.

Структура функции. Функция состоит из заголовка и тела.

Function <Имя функции> (<Аргумент1> <As Тип>, ...)<As Тип>

<программный код для определения функции>

<имя функции>= выражение

End Function

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

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

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

Формальные и фактические параметры

Подпрограмма составляется формально. Используемые в ней переменные, называются формальными.

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

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

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

Типы формальных параметров функции (в скобках) и самой функции можно не указывать - в этом случае им присваивается тип Variant.

Значения формальных параметров передается в процедуру по ссылке ByRef. VBA не отводит для них дополнительного места в памяти (чтобы хранить их значения). Поэтому формальные параметры не являются настоящими переменными - это только ссылки на значения соответствующих переменных из вызывающей процедуру программы. Если же в ходе выполнения процедуры эти параметры меняют свои значения, то в итоге может быть получен неверный результат. Чтобы этого не произошло, используется передача формального параметра в процедуру по его значению с помощью записи выражения ByVal перед именем параметра.

Например, заголовок функции может иметь следующий вид:

Function F(ByVal x As Single, n As Integer) As Single