Использование функций-процедур и подпрограмм в VBA

Подпрограммы

Объявление типов данных для аргументов функции

Аргументы с определенными типами используются по тем же причинам, по каким используются типизированные переменные или результаты функции. Определение типов аргументов для функции-процедуры помогает пользователю при вызове функции вводить аргументы правильного типа в правильном порядке. Синтаксис элемента 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: