これまでにも何度か Call ステートメントを使用していますが、プロシージャの種類、引数の有無、戻り値の有無によって、呼び出し方がいろいろあります。
そこで今回は、Call ステートメントとプロシージャの呼び出し方の関係について、整理しておくことにします。
(1)Call ステートメントを使うのは、以下の場合です。
・Subプロシージャを呼び出す
・戻り値の無い Functionプロシージャを呼び出す
(2)プロシージャを呼び出す時に Call は省略できます。 Call を省略する時は ()カッコも省略しなければなりません。(重要)
○ Call dispData() 基本形
○ Call dispData 引数が無いのでカッコを省略
○ dispData コールとカッコを省略
× dispData() コールを省略しているのにカッコがあるためエラー
(3)Call ステートメントを使わないで、引数のあるSubプロシージャを呼び出す場合は、()カッコを付けないで書きます。
addData 99, "ハワイ"
(4)もう一つ注意する点は、 Functionプロシージャ を呼び出すときに、Call ステートメントを使うと、戻り値を取得することができません。したがって戻り値の無い場合だけ利用できます。
戻り値の無いFunctionプロシージャの例
Function calc(a As Integer, b As Integer)
Debug.Print a + b
End Function
call calc(10,20)
確かに Call で呼び出せますが、あまり良い例ではありません。戻り値が無い場合は Subプロシージャ の方が適しています。
以上のように、プロシージャの呼び出し方には、いろいろな書き方があることを理解していただけたらと思います。初心者にとっては少し難しいかもしれませんが、忘れた時にはこのページを参考にしてください。
忘れても VBE(Visual Basic Editor) がエラーメッセージで教えてくれるので、大丈夫です。