次の方法で共有


Call ステートメント

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

構文

[ 呼び出し ] name [ argumentlist ]

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

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

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

しかし、ByValByRef は、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 のサポートおよびフィードバックを参照してください。