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