Call 语句

将控制转移到 Sub过程函数 过程或 动态链接库 (DLL) 过程。

语法

[ 调用 ] name [ argumentlist ]

Call 语句语法具有下列部分:

Part 说明
通话 可选;关键字。 如果指定,则必须将 argumentlist 用括号括起。

例如:Call MyProc(0)
名称 必填。 要调用的过程的名称。
argumentlist 可选。 要传递到过程的变量数组表达式的以逗号分隔的列表。 argumentlist 的组件可能包含关键字 ByValByRef,这两个关键字介绍调用过程如何对待参数

但是,ByValByRef 仅当调用 DLL 过程时才能与 Call 一起使用。 在 Macintosh 上,ByValByRef 可在发出对 Macintosh 代码资源的调用时与 Call 一起使用。

备注

调用过程时无需使用 Call 关键字。 但是,如果使用 Call 关键字调用需要参数的过程,则 argumentlist 必须以括号结尾。 如果您省略 Call 关键字,则还必须省略 argumentlist 周围的括号。 如果使用 Call 语法调用任何内部或用户定义的函数,则将丢弃该函数的返回值。

在 Visual Basic .NET 中,在大多数情况下只能省略“调用”关键字 (keyword) 保留括号,但在 VBA 中,必须同时使用或不使用“调用”和括号。

若要将整个数组传递到过程,请使用后跟空括号的数组名称。

示例

此示例演示如何使用 Call 语句将控制权转移到 Sub 过程、内部函数和动态链接库 (DLL) 过程。 Macintosh 上不使用 DLL。

' 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。