Вызов процедур Sub и Function
Чтобы вызвать процедуру Sub из другой процедуры, следует указать имя этой процедуры и значения для всех требуемых аргументовs. Использование инструкции Call не обязательно, однако если она все же используется, аргументы должны быть заключены в скобки.
Можно использовать процедуру Sub для организации других процедур, это облегчает процесс восприятия этих процедур и их отладку. В следующем примере процедура Sub Main вызывает процедуру Sub MultiBeep, передавая значение 56 для ее аргумента. По окончании работы MultiBeep управление возвращается к Main, и Main вызывает процедуру Sub Message. Message показывает окно сообщения, когда пользователь выбирает мышью OK, управление возвращается к Main, и Main завершается.
Sub Main()
MultiBeep 56
Message
End Sub
Sub MultiBeep(numbeeps)
For counter = 1 To numbeeps
Beep
Next counter
End Sub
Sub Message()
MsgBox "Пора сделать перерыв!"
End Sub
Вызов процедур Sub с несколькими аргументами
Следующий пример показывает два способа вызова процедуры Sub с несколькими аргументами. Когда процедура HouseCalc вызывается во второй раз, аргументы заключаются в скобки, поскольку используется инструкция Call.
Sub Main()
HouseCalc 99800, 43100
Call HouseCalc(380950, 49500)
End Sub
Sub HouseCalc(price As Single, wage As Single)
If 2.5 * wage <= 0.8 * price Then
MsgBox "Этот дом слишком дорогой."
Else
MsgBox "Цена этого дома приемлема."
End If
End Sub
Использование скобок при вызове процедур Function
Чтобы получить возвращаемое значение функции, надо присвоить эту функцию переменной и заключить аргументы в скобки, как показано в следующем примере.
Answer3 = MsgBox("Вам нравится Ваша зарплата?", 4, "Question 3")
Если возвращаемое значение функции не требуется, можно вызвать функцию точно так же, как процедуру Sub. Надо опустить скобки, указать список аргументов и не присваивать функцию переменной, как показано в следующем примере.
MsgBox "Конец задачи!", 0, "Список задач"
Внимание! Наличие скобок в предыдущем примере приведет к синтаксической ошибке.
Передача именованных аргументов
Инструкция в процедуре Sub или Function может передавать значения вызываемым процедурам с помощью именованных аргументов. Именованные аргументы можно перечислять в любом порядке. Именованный аргумент состоит из имени аргумента, за которым следует двоеточие, знак равенства (:=) и значение, присваиваемое аргументу.
В следующем примере вызывается функция MsgBox с помощью именованных аргументов без возвращаемого значения.
MsgBox Title:="Список задач", Prompt:="Конец задачи!"
Следующий пример вызывает функцию MsgBox с помощью именованных аргументов. Возвращаемое значение присваивается переменной answer3.
answer3 = MsgBox(Title:="Question 3", _
Prompt:="Вам нравится Ваша зарплата?", Buttons:=4)