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

Callステートメントとは

プロシージャ内での処理中に、他の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)

【参考】

指定したフォルダ内のファイル名全てを取得(Excel VBA)
変数でよく使われる「buf」「tmp」の意味
Dir関数が取得するファイルの順番
指定したフォルダ内のフォルダ名全てをGetAttrを使って「エラー53 ファイルが見つかりません。」を出さずに取得(Excel VBA)
GetAttrとは?「= vbDirectory」ではなく「And vbDirectory」となるビット演算の疑問
フォルダ名だけを取得したい時に出てくる 「.」 と 「..」 とは?
指定したフォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
CreateObject(“Scripting.FileSystemObject”) を使ってサブフォルダを取得
再帰処理とは?フォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
指定したフォルダ内のサブフォルダのフォルダ名を全部取得(Excel VBA)
再帰処理とは?フォルダ内のサブフォルダのフォルダ名を全部取得(Excel VBA)
参照渡し「ByRef」と値渡し「ByVal」の違い(Excel VBA)
ファイルのフルパスからファイル名のみを取得 InStrRev関数(Excel VBA)
指定したフォルダの全ての階層のフォルダ名・サブフォルダ名・ファイル名を取得(Excel VBA)
FileSystemObjectとは?CreateObject 関数 FolderExists・GetFolderの使い方
FileSystemObject CreateObject関数を使う方法・ 参照設定を使う方法 違いを理解してエラー防止
再帰処理とは?指定したフォルダの全ての階層のフォルダ名・サブフォルダ名・ファイル名を取得(Excel VBA)
ファイルのフルパスからファイル名のみを取得 Split関数(Excel VBA)
Callステートメントとは 引数 括弧()の使い方(Excel VBA)
指定したフォルダ内から「特定の文字を含まないファイル名」を取得(Excel VBA)
ワイルドカードとは。使い方いろいろ。(Excel)
Dir関数の使い方。ファイル名やフォルダ名の取得方法。(Excel VBA)
指定したフォルダのファイル名を取得し、そのファイル名を一括で変換(Excel VBA)
Excel起動時に「コンパイルエラー」。64ビット システムで Declareステートメントに、PtrSafe属性を設定(Excel VBA )
「ファイルを開く」ダイアログボックス から ファイル名を取得(Excel VBA)
「ファイルを開く」ダイアログボックス から 複数 ファイル名を取得(Excel VBA)
指定フォルダ内のサブフォルダ全てをフォルダ構成のみ(空フォルダ)を別フォルダにコピー(Excel VBA)
再帰処理とは?指定フォルダ内のサブフォルダ全てをフォルダ構成のみ(空フォルダ)を別フォルダにコピー(Excel VBA)

■スポンサーリンク

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