Вызов процедуры
Вызов процедуры sub из другой процедуры можно произвести несколькими способами.
Первый способ вызова процедуры Sub: ИмяПроцедуры СписокФактическихПараметров
ИмяПроцедуры |
Имя вызываемой процедуры | ||||
СписокФактическихПараметров |
Список аргументов, передаваемых процедуре. Он должен соответствовать списку, заданному в процедуре по количеству и типу | ||||
Если требуется использовать несколько процедур с одинаковыми названиями, при их вызове после имени процедуры через точку надо указывать имя модуля, на котором они расположены. А именно, ИмяМодуля.ИмяПроцедуры СписокФактическихПараметров
Второй способ вызова процедуры sub производится с помощью инструкции Call.
ИмяПроцедуры (СписокФактическихПараметров)
Обратите внимание, что в этом случае список фактических параметров заключается в скобки. В первом способе скобки не использовались.
VBA позволяет вводить фактические параметры через имена аргументов в любом порядке и опускать необязательные (optional). При этом после имени аргумента ставятся двоеточие и знак равенства, после которого помещается значение аргумента (фактический параметр).
Приведенный ниже пример показывает основные способы передачи параметров в процедуры.
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)
'
' Процедура, находящая сумму двух чисел и выводящая
' результат в диалоговом окне
'
с = а + b
'
MsgBox CStr(c)
End Sub
'
Sub Main ()
'
' Процедура, находящая сумму двух чисел и выводящая
' результат в диалоговом окне
Dim x, у As Double
' x, у — переменные, используемые в качестве фактических параметров
' Вызов процедуры с конкретными числами как фактическими параметрами
'
Assistant 1, 3
' Первоначальное присвоение переменным значений,
' с последующим вызовом процедуры
'
х = 1: у = 1 Assistant x, у + 2
' Использование функции как фактического параметра
х = 1: у = 3
Assistant F(x), у
'
' Вызов процедуры с указанием фактических параметров по имени
'
Assistant a:=l, b:=3
End Sub
Приведем пример процедуры с необязательными параметрами. Процедура СторонаТреугольника позволяет найти длину недостающей стороны прямоугольного треугольника, где переменные А и В отведены под длины катетов, а переменная с — под гипотенузу. Например, формула
=СторонаТреугольника(;В2;С2)
вычисляет катет А по введенным в ячейки В2 и С2 длинам катета В и гипотенузы С. При работе с необязательными переменными необходимо использовать функцию isMissing, возвращающую значение True, если соответствующий аргумент не был передан в процедуру, и False в противном случае.
Function СторонаТреугольника(Optional A,
Optional В, Optional С)
If Not (IsMissing(A)) And Not (IsMissing(В)) Then
СторонаТреугольника = Sqr(А ^ 2 + В ^ 2)
End If
If Not (IsMissing(A)) And Not (IsMissing(C)) Then
СторонаТреугольника = Sqr(С ^ 2 - А ^ 2)
End If
If Not (IsMissing(B)) And Not (IsMissing(C)) Then
СторонаТреугольника = Sqr(C ^ 2 - В ^ 2)
End If
End Function