Оценить:
 Рейтинг: 3.6

Excel. Трюки и эффекты

Год написания книги
2011
<< 1 ... 12 13 14 15 16 17 18 19 20 ... 24 >>
На страницу:
16 из 24
Настройки чтения
Размер шрифта
Высота строк
Поля

Ниже приведен пример функции, которая вычисляет квадратный корень из переданного ей аргумента (если аргумент меньше нуля, то возвращается значение -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, 12 Пропущен первый параметр

Procedure Пропущены оба параметра

Использование именованных параметров

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

Для использованной выше процедуры Procedure вызов с применением именованных параметров выглядит следующим образом:

Procedure intA:=12, intB:=56

или

Procedure intB:=56, intA:=12

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

Procedure intB:=56

В данном примере не очень заметны преимущества использования именованных параметров. Другое дело, если необходимо использовать следующую функцию, задав значения только параметров arg3 и arg8:

Function dhManyArg(Optional arg1, Optional arg2, Optional arg3,

_

Optional arg4, Optional arg5, Optional arg6, Optional arg7, _

Optional arg8)

' Инструкции функции
<< 1 ... 12 13 14 15 16 17 18 19 20 ... 24 >>
На страницу:
16 из 24