Call ステートメント

制御を Subプロシージャ、関数プロシージャ、またはダイナミック リンク ライブラリ (DLL) プロシージャに転送します。

構文

[ 呼び出し ] name [ argumentlist ]

Call ステートメントの構文には、次の指定項目があります。

指定項目 説明
Call キーワードはオプションです。 指定した場合は、argumentlist をカッコに入れる必要があります。

例: Call MyProc(0)
name 必ず指定します。 呼び出すプロシージャの名前。
argumentlist 省略可能。 プロシージャに渡す変数、配列、または式のコンマ区切りのリスト。 呼び出されたプロシージャで引数がどのように処理されるかを示す目的で、argumentlist のコンポーネントとして ByVal または ByRef キーワードを含めることができます。

しかし、ByVal と ByRef は、DLL プロシージャを呼び出すときのみ、Call と共に使用できます。 On the Macintosh, ByVal and ByRef can be used with Call when making a call to a Macintosh code resource.

注釈

プロシージャを呼び出すとき、Call キーワードを使用する必要はありません。 しかし、Call キーワードを使用して、引数を必要とするプロシージャを呼び出す場合、argumentlist をカッコで囲む必要があります。 Call キーワードを省略する場合、argumentlist のカッコを外す必要があります。 Call 構文を使用して、ネイティブまたはユーザー定義の関数を呼び出す場合、関数の戻り値は破棄されます。

Visual Basic .NET では、ほとんどの場合、かっこを残したままにキーワード (keyword)呼び出しのみを省略できますが、VBA では、呼び出しとかっこの両方またはいずれも使用する必要があります。

プロシージャに配列全体を渡すには、空のカッコの後に配列名を使用します。

例

この例では、制御を Sub プロシージャ、組み込み関数、およびダイナミック リンク ライブラリ (DLL) プロシージャに転送するために Call ステートメントを使用する方法を示します。 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 のサポートおよびフィードバックを参照してください。