プロシージャを呼び出す方法には、呼び出すプロシージャに引数があるかないか、 Callステートメントを使用するか否かによって記述方法が異なります。
Callステートメントは使用してもしなくてもどちらでも問題ないので、自分がコードを見てわかりやすい方を選ぶとよいでしょう。
Subプロシージャの呼び出し
引数のないSubプロシージャを呼び出す
プロシージャA から、引数のないSubプロシージャB を呼び出すには以下のように記述します。
Callステートメントを使用せずに、以下のように記述しても問題ありません。
引数のあるSubプロシージャを呼び出す
プロシージャA から、2つの引数をもつSubプロシージャC を呼び出すには以下のように記述します。
引数がある場合でも Callステートメントは省略可能です。ただし、省略する場合はカッコを削除する必要がある点に注意してください。
引数のあるプロシージャを呼び出すサンプル(その1)
プロシージャA から引数のあるプロシージャC を呼び出すサンプルになります。プロシージャAを実行すると、プロシージャC が呼び出されて引数の値が表示されます。
Sub プロシージャA()
Call プロシージャC(1, "abc")
End Sub
Sub プロシージャC(intA As Integer, strB As String)
MsgBox "第1引数は『" & intA & "』、第2引数は『" & strB & "』です。"
End Sub
引数のあるプロシージャを呼び出すサンプル(その2)
上記の例では引数a、bを順に指定していましたが、名前付き引数を使用すると、引数を任意の順で指定することができます。名前付き引数を使用する場合はコロン(:)と等号(=)につづけて値を指定します。
この方法は省略可能な引数が多いプロシージャに対して、一部の引数にのみ値を設定したい場合に便利です。
Sub プロシージャA_2()
Call プロシージャC(strB:="abc", intA:=1)
End Sub
Sub プロシージャC(intA As Integer, strB As String)
MsgBox "第1引数は『" & intA & "』、第2引数は『" & strB & "』です。"
End Sub
Functionプロシージャの呼び出し
Functionプロシージャを読みだす方法はSubプロシージャを呼ぶ場合と全く同じです。ただ、Functionプロシージャには戻り値があるため、基本的には代入演算子(=)の右側に記述して戻り値を変数で受ける形になります。
引数のないFunctionプロシージャを呼び出す場合
引数のあるFunctionプロシージャを呼び出す場合
今までの例では引数に単なる数値や文字列のみを指定してきましたが、引数には’式’を設定することができます。‘式’とは最終的に数値や文字列に評価されるもので、算術式などがこれにあたります。式にはFunctionプロシージャを含めることができるので、引数に直接Functionプロシージャを指定することもできます。