Основы офисного программирования и язык VBA


Синтаксис процедур и функций - часть 4


В теле функции должен быть использован оператор присвоения вида:

имя = выражение

Здесь, в левой части оператора стоит имя функции, а в правой - значение выражения, задающего результат вычисления функции. Если при выходе из функции переменной имя значение явно не присвоено, функция возвращает значение соответствующего типа, определенное по умолчанию. Для числовых типов это 0, для строк - строка нулевой длины (""), для типа Variant функция вернет значение Empty, для ссылок на объекты - Nothing.

Чтобы немедленно завершить вычисления функции и выйти из нее, в теле функции можно использовать оператор:

Exit Function

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

Function cube(ByVal N As Integer) As Long cube= N*N*N End Function

Вызов этой функции может иметь вид

Dim x As Integer, y As Integer y = 2 x = cube(y+3)

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

Sub cube1(ByVal N As Integer, ByRef C As Long) C= N*N*N ' получение результата в переменной, заданной по ссылке End Sub

Ее можно использовать для такого же возведения в куб:

cube1 y+3, x

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

x = cube(y)+sin(cube(x))

то его вычисление с помощью процедуры Cube1 потребовало бы выполнения нескольких операторов и ввода дополнительных переменных:

cube1 y,z cube1 x,u x=z+ sin(u)




Начало  Назад  Вперед



Книжный магазин