プロシージャの呼び出し

プロシージャを呼び出す方法には、呼び出すプロシージャに引数があるかないか、 Callステートメントを使用するか否かによって記述方法が異なります。

Callステートメントは使用してもしなくてもどちらでも問題ないので、自分がコードを見てわかりやすい方を選ぶとよいでしょう。

スポンサーリンク

Subプロシージャの呼び出し

引数のないSubプロシージャを呼び出す

プロシージャA から、引数のないSubプロシージャB を呼び出すには以下のように記述します。

構文
Sub プロシージャA()
    Call プロシージャB
End Sub

Callステートメントを使用せずに、以下のように記述しても問題ありません。

構文
Sub プロシージャA()
    プロシージャB
End Sub

引数のあるSubプロシージャを呼び出す

プロシージャA から、2つの引数をもつSubプロシージャC を呼び出すには以下のように記述します。

構文
Sub プロシージャA()
    Call プロシージャC([引数1], [引数2])
End Sub

引数がある場合でも Callステートメントは省略可能です。ただし、省略する場合はカッコを削除する必要がある点に注意してください。

構文
Sub プロシージャA()
    プロシージャC [引数1], [引数2]
End Sub

引数のあるプロシージャを呼び出すサンプル(その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
プロシージャA の実行結果
プロシージャA の実行結果

引数のあるプロシージャを呼び出すサンプル(その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
プロシージャA_2 実行結果
プロシージャA_2 実行結果

Functionプロシージャの呼び出し

Functionプロシージャを読みだす方法はSubプロシージャを呼ぶ場合と全く同じです。ただ、Functionプロシージャには戻り値があるため、基本的には代入演算子(=)の右側に記述して戻り値を変数で受ける形になります。

引数のないFunctionプロシージャを呼び出す場合

構文
Sub プロシージャA()
    Dim rtn as Variant
    rtn = プロシージャD
End Sub

引数のあるFunctionプロシージャを呼び出す場合

構文
Sub プロシージャA()
    Dim rtn as Variant
    rtn = プロシージャD([引数1]...)
End Sub

今までの例では引数に単なる数値や文字列のみを指定してきましたが、引数には’式’を設定することができます。‘式’とは最終的に数値や文字列に評価されるもので、算術式などがこれにあたります。式にはFunctionプロシージャを含めることができるので、引数に直接Functionプロシージャを指定することもできます。

タイトルとURLをコピーしました