Callステートメントとは 引数 括弧()の使い方(Excel VBA)

プロシージャ内での処理中に、他のSubプロシージャやFunctionプロシージャを呼び出して処理を行うのが、Callステートメントです。

Call 呼び出し先プロシージャ名(引数)

Call」は省略して、プロシージャ名だけでも処理してくれるのですが、後から見たとき、これナニ?ってならないように私は「Call」を付けるようにしています。

呼び出し先プロシージャで引数が必要ない場合は「(引数)」は不要です。

このプロシージャですが、「Call」を付ける場合には、引数を「( )」で囲む必要があります。逆に「Call」を省略する場合には、引数の前後にカッコ「( )」を付けてはいけません。

Callを使った例】
Sub 呼び出し元()
    Dim 変数A As String
    変数A = "呼び出し元から来たよん♪"
    MsgBox "メッセージ1:" & 変数A '「メッセージ1:呼び出し元から来たよん♪」と表示される
    Call 呼び出し先(変数A)
    MsgBox "メッセージ4:" & 変数A '「メッセージ4:呼び出し先に来たよん★」と表示される
End Sub

Sub 呼び出し先(変数A As String)
    '「呼び出し元」プロシージャから
    '変数A="呼び出し元から来たよん♪"を引数として受け取り実行
    MsgBox "メッセージ2:" & 変数A '「メッセージ2:呼び出し元から来たよん♪」と表示される
    変数A = "呼び出し先に来たよん★"
    MsgBox "メッセージ3:" & 変数A'「メッセージ3:呼び出し先に来たよん★」と表示される

    '変数A="呼び出し先に来たよん★"と変数を変更した状態で
    '「呼び出し元」プロシージャに戻る
End Sub

【処理の流れ】

  1. 呼び出し元」プロシージャで変数A
    呼び出し元から来たよん♪
    をセットします。
  2. この段階での変数Aを含むメッセージは
    「メッセージ1:呼び出し元から来たよん♪
  3. Callステートメントで変数Aを引数として、「呼び出し先」プロシージャを実行します。
  4. 呼び出し先」プロシージャでは、変数AをString型として受け取ります。
  5. この段階での変数Aを含むメッセージは
    「メッセージ2:呼び出し元から来たよん♪
  6. 変数A
    呼び出し先に来たよん★
    をセットします。
  7. この段階での変数Aを含むメッセージは
    「メッセージ3:呼び出し先に来たよん★
  8. 呼び出し先」プロシージャの処理が終了したので、「呼び出し元」プロシージャに戻ります。
  9. 呼び出し元」プロシージャにて、残りの処理を実行します。
  10. この段階での変数Aを含むメッセージは
    「メッセージ4:呼び出し先に来たよん★

という処理の流れになります。

Callステートメントの引数の渡し方についての詳細は、下記ページをご参照ください。
参照渡し「ByRef」と値渡し「ByVal」の違い(Excel VBA)

■スポンサーリンク

■ランキングに参加しています。
↓このブログを気に入っていただけましたら、ポチッとお願いします。
にほんブログ村 IT技術ブログへ
にほんブログ村