Подпрограммы
Объявление типов данных для аргументов функции
Аргументы с определенными типами используются по тем же причинам, по каким используются типизированные переменные или результаты функции. Определение типов аргументов для функции-процедуры помогает пользователю при вызове функции вводить аргументы правильного типа в правильном порядке. Синтаксис элемента Arglist:
[Optional] [ByVal | ByRef] [ParamArray] имяПеременной_
[As тип] [= поУмолчанию]
Optional – ключевое слово, указывающее, что аргумент не является обязательным. При использовании этого элемента все последующие аргументы, которые содержатся в списке Arglist, также должны быть необязательными и описаны с помощью ключевого слова Optional;
Function Name (tstr As String, Optional nChar As Long) As String
ByVal – указывает, что этот аргумент передается по значению;
ByRef – указывает, что этот аргумент передается по ссылке. Описание ByRef используется в VBA по умолчанию;
ParamArray – ключевое слово ParamArray позволяет задавать произвольное количество аргументов. Оно не может быть использовано со словами Byval, ByRef или Optional.
|
|
= поУмолчанию – значение аргумента по умолчанию.
Для объявления определенных типов аргументов функции-процедуры, используется ключевое слово As, за которым следует имя нужного типа данных после имени аргумента в списке аргументов.
Пример 2. Определение типа данных аргумента функции LenTrim
Function LenTrim(tStr As String) As Long
'возвращает длину tStr без ведущих и хвостовых пробелов
LenTrim = Len(Trim(tStr))
End Function
Подпрограмма – представляет собой определенный набор операторов, составленный пользователем и расположенный отдельно от основной программы. Подпрограмма имеет следующий синтаксис:
[Private | Public] [Static] Sub Name([Arglist]) [As Type]
'комментарий, описывающий функцию
[Инструкции]
[Exit Sub]
[Инструкции]
End Sub
Использовать собственные функции-процедуры в операторах VBA надо так же, как любые встроенные функции. Все правила и условия по использованию встроенных функций применимы к пользовательским функциям-процедурам. При вызове функции необходимо включать список аргументов в круглых скобках.
Если нужно использовать именованные аргументы функциях-процедурах, надо использовать имена из списка аргументов в объявлении функции-процедуры. Например, чтобы использовать именованный аргумент в вызове функции LenTrim, надо использовать оператор, подобный следующему:
AnyStr = SLen(tStr:=MyString)
Для вызова процедуры Sub используется следующие способы:
ИмяПроцедуры СписокФактическихПараметров
Call ИмяПроцедуры (СписокФактическихПараметров)
Пример 3:
Dim с As Double 'с - глобальный параметр
Function F(ByVal x As Integer) As Integer
|
|
F = x ^ 2
End Function
Sub Assistant(ByVal a As Integer, ByVal b As Integer)
' Процедура, находящая сумму двух чисел и выводящая
' результат в диалоговом окне
C = а + b
MsgBox CStr(C)
End Sub
'
Sub Main()
' Процедура, находящая сумму двух чисел и выводящая
' результат в диалоговом окне
Dim x, у As Double
' Вызов процедуры с фактическими параметрами
Call Assistant(1, 3)
' Первоначальное присвоение переменным значений,
' с последующим вызовом процедуры
'
x = 1: у = 1
Call Assistant(x, F(x))
Assistant x, у + 2
' Использование функции как фактического параметра
'
х = 1: у = 3
Assistant F(x), у
'
' Вызов процедуры с указанием фактических параметров по имени
'
Assistant a:=l, b:=3
End Sub