Оператор Call
Передает управление процедуреSub, процедуре функции или процедуре динамической библиотеки (DLL).
Синтаксис
[ Позвонить ] name [ argumentlist ]
Синтаксис оператора Call состоит из следующих частей:
Part | Описание |
---|---|
Звонок | Необязательный элемент; ключевое слово. Если указан, следует заключить элемент список_аргументов в скобки. Пример: Call MyProc(0) |
name | Обязательно. Имя вызываемой процедуры. |
список аргументов | Необязательный параметр. Список с разделителями-запятыми переменных, массивов или выражений, передаваемых процедуре. Компоненты список_аргументов могут включать ключевые слова ByVal или ByRef для описания способа, с помощью которого аргументы обрабатываются вызванной процедурой. Однако ByVal и ByRef могут использоваться с ключевым словом Call только при вызове процедуры DLL. На компьютерах Macintosh ByVal и ByRef могут использоваться с ключевым словом Call при вызове ресурса кода Macintosh. |
Замечания
Ключевое слово Call не требуется обязательно использовать при вызове процедуры. Однако если ключевое слово Call используется для вызова процедуры, требующей задания аргументов, элемент список_аргументов должен быть заключен в скобки. Если ключевое слово Call будет пропущено, необходимо также убрать и скобки вокруг элемента список_аргументов. Если используется синтаксис Call для вызова любой внутренней либо определяемой пользователем функции, значение, возвращаемое этой функцией, отбрасывается.
В Visual Basic .NET можно опустить только ключевое слово вызовов, оставляя скобки в большинстве случаев, но в VBA необходимо использовать оба вызова и круглые скобки или ни один из них.
Чтобы передать процедуре целый массив, используйте имя этого массива, после которого следует записать пустые скобки.
Пример
В этом примере показано, как оператор Call используется для передачи управления процедуре Sub , встроенной функции и процедуре динамической библиотеки (DLL). Библиотеки DLL не используются в Macintosh.
' Call a Sub procedure.
Call PrintToDebugWindow("Hello World")
' The above statement causes control to be passed to the following
' Sub procedure.
Sub PrintToDebugWindow(AnyString)
Debug.Print AnyString ' Print to the Immediate window.
End Sub
' Call an intrinsic function. The return value of the function is
' discarded.
Call Shell(AppName, 1) ' AppName contains the path of the
' executable file.
' Call a Microsoft Windows DLL procedure. The Declare statement must be
' Private in a Class Module, but not in a standard Module.
Private Declare Sub MessageBeep Lib "User" (ByVal N As Integer)
Sub CallMyDll()
Call MessageBeep(0) ' Call Windows DLL procedure.
MessageBeep 0 ' Call again without Call keyword.
End Sub
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.