Excel. Трюки и эффекты. Алексей Гладкий
Чтение книги онлайн.
Читать онлайн книгу Excel. Трюки и эффекты - Алексей Гладкий страница 19
Ниже приведен пример функции, которая вычисляет квадратный корень из переданного ей аргумента (если аргумент меньше нуля, то возвращается значение -1, сигнализирующее об ошибке):
Function dhSQR(dblValue As Double) As Double
If dblValue < 0 Then
' Недопустимый аргумент функции
dhSQR = -1
Else
' Вычисление квадратного корня
dhSQR = Sqr(dblValue)
End If
End Function
Вызов функций
Для вызова функций допускается также использовать инструкцию Call, например:
Call dhSQR(16.324)
или
dhSQR 16.324
Однако при этом теряется возвращаемое функцией значение. Для использования возвращаемого значения идентификаторы функций необходимо включать в выражения справа от знака равенства или другого оператора. Тогда в момент вычисления значения выражения, в состав которого входит идентификатор функции, происходит вызов данной функции, а возвращенное ей значение подставляется в исходное выражение вместо идентификатора функции. Например, в результате обработки каждого из следующих выражений в переменную dblRes будет записано значение 5:
dblRes = dhSQR(25)
dblRes = 1 + dhSQR(16)
Точно таким же образом вызываются все встроенные функции VBA, например
IsArray, SQR и Array.
Особенности передачи параметров
При создании и использовании процедур и функций необходимо учитывать некоторые особенности передачи параметров в них. Они общие для процедур и функций. Рассмотрим данные особенности.
Этот способ передачи параметров наиболее распространен и применяется практически во всех языках программирования. Во всех предыдущих примерах использовался именно позиционный способ передачи параметров в функции и процедуры. Суть данного способа в том, что при вызове процедуры или функции аргументы записываются в том порядке, в котором они указаны при ее объявлении. Пусть, например, необходимо использовать такую процедуру:
Sub Procedure(Optional intA As Integer = 25, Optional intB As Integer)
' Инструкции процедуры
…
End Sub
Вызов данной процедуры с использованием позиционной передачи параметров выглядит следующим образом:
Procedure 12, 56
или
Call Procedure (12, 56)
Отдельного внимания заслуживает передача необязательных параметров. Необязательные параметры можно пропустить, тогда им будет присвоено значение по умолчанию (см. подраздел об объявлении процедур). Ниже приведены примеры вызова процедуры Procedure с пропуском некоторых параметров по умолчанию:
Procedure 12 Пропущен второй параметр
Procedure,