Callステートメント

こちらでは、エクセルVBAのSubプロシージャ、Functionプロシージャ、組み込み関数などを呼び出すCallステートメントについて解説しています。

ステートメントとは、「命令文」と訳されるように、コンピュータに具体的な動作を指定する最小単位のプログラムです。主にマクロの挙動を制御する構文や文法を指します。通常は1行で完結する部分を指しますが、If~Thenなど複数行にまたがる部分を意味することもあります。

目次

Callステートメントとは

Callステートメントは、他のSubプロシージャやFunctionプロシージャなどを呼び出して制御を渡すフロー制御ステートメントです。Callを省略して呼び出すことは可能ですが、別のプロシージャを呼び出していることが分かりますので、メンテナンスも考慮して明記するようにしましょう

Call プロシージャ名
プロシージャ名

構文[Call] name [argumentlist]
キーワード省略説明
CallCallステートメントを省略し、プロシージャを呼び出すこともできます。その際は、引数リストを囲む括弧も省略しなければなりません。また、Callステートメントで値を返すプロシージャを呼び出しても、返り値を取得することはできません。Call構文で組み込み関数またはユーザー定義型関数を呼び出す場合も同様にその関数の戻り値を取得することはできません。返り値を取得する場合は、Callステートメントを省略して取得します。
name×呼び出すプロシージャの名前を指定します。
argumentlistプロシージャに引き渡す引数を設定します。変数、配列、式のいずれかを指定します。複数指定する場合は、カンマ (,) で区切ります。また、argumentlistを指定する場合は、引数を括弧で囲む必要があります。

Callステートメントの基本形サンプルコード


Sub sample1()

    Call msg1

End Sub

Sub msg1()

    MsgBox "Callステートメントを明記した基本形になります。"

End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

実行結果

メッセージボックスに「Callステートメントを明記した基本形になります。」が表示される。

Callステートメント基本形

解説

呼び出し先sample1と呼び出し元msg1のSubステートメントには引数の設定をしていません。次にCallステートメント明記して、msg1プロシージャを実行しています。msg1プロシージャにはMsgBox関数が利用されているので、メッセージボックスに「Callステートメントを明記した基本形になります。」を表示させます。

最後はEndステートメントを利用してsample1プロシージャを終了させます。

Callステートメントの省略形サンプルコード


Sub sample2()

    msg2

End Sub

Sub msg2()

    MsgBox "Callステートメントの省略形になります。"

End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

実行結果

メッセージボックスに「Callステートメントの省略形になります。」が表示される。

Callステートメント省略形

解説

呼び出し先sample2と呼び出し元msg2のSubステートメントには引数の設定をしていません。次にCallステートメント省略して、msg2プロシージャを実行しています。msg2プロシージャにはMsgBox関数が利用されているので、メッセージボックスに「Callステートメントの省略形になります。」を表示させます。

最後はEndステートメントを利用してsample2プロシージャを終了させます。

Callステートメントで引数を設定したサンプルコード


Sub sample3()

    Dim keyWords As String
    
    keyWords = "引数を渡して呼び出します。"
    
    Call msg3(keyWords)
    
End Sub

Sub msg3(keyWords As String)

    MsgBox keyWords
    
End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

実行結果

メッセージボックスに「引数を渡して呼び出します。」が表示される。

Callステートメント引数設定

解説

呼び出し先sample3のSubステートメントには引数の設定していませんが、呼び出し元msg3にはkeyWordsが文字列型(String)で設定されています。そして、Dimステートメントを利用して変数keyWordsに文字列型(String)を宣言し、「引数を渡して呼び出します。」を代入します。次にCallステートメントに変数keyWordsを引数に設定して、msg3プロシージャを実行しています。msg3プロシージャにはMsgBox関数が利用されているので、変数keyWordsを代入して「引数を渡して呼び出します。」を表示させます。

最後はEndステートメントを利用してsample3プロシージャを終了させます。


Sub sample3()

    Dim keyWords As String
    
    keyWords = "引数を渡して呼び出します。"
    
    msg3 keyWords
    
End Sub

Sub msg3(keyWords As String)

    MsgBox keyWords
    
End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

また、省略形で記述する場合は、引数をカッコで囲まずに半角スペースを入れて記述します。こちらも同様の結果になります。

Callステートメントで戻り値を設定したサンプルコード


Sub sample4()

    Dim n As Integer, result As Integer
    
    n = 3
    
    result = addition(n)
    
    Debug.Print "戻り値の数値は" & result

End Sub

Function addition(n As Integer) As Integer

    addition = n + 10
    
End Function

※ドラッグ(スワイプ)すると全体を確認できます。

実行結果

戻り値の数値は13

解説

呼び出し先sample4のSubステートメントには引数の設定していませんが、呼び出し元additionのFunctionステートメントには、nが整数型(Integer)で設定されています。次に、Dimステートメントを利用して変数n,resultに整数型(Integer)を宣言し、変数nには「3」を代入します。そして、変数resultにはCallステートメント省略して、additionプロシージャを実行し戻り値を代入します。additionプロシージャにn=3を参照渡しすると、変数additionは3+10で「13」となるため、こちらが戻り値となります。戻り値を取得したら、DebugオブジェクトのPrintメソッドで「戻り値の数値は13」を表示させます。

最後はEndステートメントを利用してsample4プロシージャを終了させます。

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。

VBAのIE操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。

目次

VBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。