Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vba.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Необязательные параметры в подпрограммах.

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

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

Пример.

Public sub nn(z, optional a, optional b)

‘z- обязательный параметр

‘a,b - необязательные параметры

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

Пример работы с программами, где встречаются необязательные параметры.

Public sub nn(z, optional a, optional b)

‘z- обязательный параметр

‘a,b - необязательные параметры

z=z+3

If ISMISSING(a) then

If ISMISSING(b) then

Exit sub ‘не определено ни а ни b

Else ‘не определено а, но определен b

b= b+5

Exit sub

End if

Else

If ISMISSING(b) then ‘не определено b, но определен а

a =a + 7

Else ‘ определены а и b

a=a + 10

b=b+20

End if

End if

End sub

Рассмотрим, как в этом случае может вызываться программа nn из другой подпрограммы, например, подпрограммы example.

Sub example()

z=5: a=7 : b=10

nn z, a, b ‘ вызов подпрограммы. Все параметры определены

msgbox “z=” & z & “a=” & a & “b=” b

‘Выводит z=8 a=17 b=30

z=5: a=7 : b=10

nn z, , b ‘ вызов подпрограммы. Определены z и b

msgbox “z=” & z & “a=” & a & “b=” b

‘Выводит z=8 a=7 b=15

‘Обращаем внимание, что параметр а не влияет на ход работы подпрограммы nn

z=5: a=7 : b=10

nn z, a ‘ вызов подпрограммы. Определены z и а

msgbox “z=” & z & “a=” & a & “b=” b

‘Выводит z=8 a=14 b=10

‘Обращаем внимание, что параметр b не влияет на ход работы подпрограммы nn

z=5: a=7 : b=10

nn z ‘ вызов подпрограммы. Определен только z

msgbox “z=” & z & “a=” & a & “b=” b

‘Выводит z=8 a=7 b=10

‘Обращаем внимание, что параметры а и b не влияет на ход работы подпрограммы nn

End sub

Обратите внимание, как отсутствующие фактические параметры обрамляются запятыми.

Процедура функция.

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

Синтаксис подпрограммы-функции имеет вид:

[Public | Private] Function «имя» (список формальных аргументов)

«действия»

End Function

Досрочный выход из процедуры функции осуществляется с помощью операции EXIT Function.

Замечание .Отметим, что при построении процедуры функции среди действий должен быть хотя бы оператор вида:

<Имя> = выражение.

Данное выражение позволяет выяснить, какое же конкретное значение придается нашей функции. Вызов функции осуществляется как вызов стандартной функции типа sin, cos …, а именно после имени функции в круглых скобках через запятую идут фактические параметры.

Пример.

Public Function BMV (x, z)

‘BMV – имя новой функции

‘x, z – параметры

y= sin(x) * EXP (x+2)

z= cos(y) * EXP (sin(y))

BMV= z * y

END Function

Пример использования функции BMV

zz= sin(x) * BMV (10, 20)

t= EXP(30) / BMV (5, zz)

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]