Шаг 5 - Инструкция Call

Передает управление в процедуру Sub, процедуру Function или процедуру библиотеки динамической компоновки (DLL).

Call имя [списокАргументов]

Параметры
имя
Обязательный. Имя вызываемой процедуры.
списокАргументов
Необязательный. Разделяемый запятыми список переменных, массивов или выражений, передаваемых в процедуру. Компоненты спискаАргументов могут включать ключевые слова ByVal или ByRef для описания того, каким образом аргументы будут рассматриваться вызываемой процедурой. Однако ключевые слова ByVal и ByRef могут использоваться с инструкцией Call только при вызове процедуры из библиотеки динамической компоновки.

Замечания
Не обязательно применять ключевое слово Call при вызове процедуры. Однако, если ключевое слово Call используется для вызова процедуры с аргументами, списокАргументов должен быть заключен в скобки. Если ключевое слово Call не используется, необходимо также опустить скобки вокруг спискаАргументов. При использовании синтаксиса Call для вызова как внутренней, так и определяемой пользователем функции, возвращаемое функцией значение отбрасывается.
Для передачи в процедуру полного массива следует воспользоваться именем массива с пустыми скобками.

Пример
В данном примере показано, как использовать инструкцию Call для передачи управления процедуре Sub, внутренней функции, процедуре библиотеки динамической компоновки (DLL) и процедуре программного ресурса Macintosh.

' Вызов процедуры Sub.
Call PrintToDebugWindow("Всем привет")	
' Предыдущая инструкция передает управление следующей процедуре Sub.
Sub PrintToDebugWindow(AnyString)
	Debug.Print AnyString		' Вывод в окно отладки.
End Sub

' Вызов внутренней функции. Значение, возвращаемое этой функцией,
' не используется.
Call Shell(AppName, 1)			' AppName содержит путь к выполняемому файлу.

' Вызов процедуры DLL Microsoft Windows.  Инструкция Declare должна
' быть личной (Private) в модуле класса, но не в стандартном модуле.
Private Declare Sub MessageBeep Lib "User" (ByVal N As Integer)

Sub CallMyDll()
	Call MessageBeep(0)		' Вызов процедуры Windows DLL.
	MessageBeep 0			' Повторный вызов без  ключевого слова Call.
End Sub

' Вызов программного ресурса Macintosh.
Declare Sub MessageAlert Lib "MyHd:MyAlert" Alias "MyAlert" (ByVal N _
As Integer)
Sub CallMyCodeResource()
	Call MessageAlert(0)		' Вызов программного ресурса Macintosh.
	MessageAlert 0			' Повторный вызов без  ключевого слова Call.
End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 10.02.2002