引数付きSubプロシージャとFunction

引数付きSubプロシージャとは

通常Subプロシージャはそれ単体で動かすことが出来るものです。対する引数付きのSubプロシージャは引数を受けとらなければ動かすことができないプロシージャとなります。

Functionプロシージャとは

こちらもそれ単体では動かす事が出来ません。引数も受け取らなくても大丈夫です。

引数付きのSubプロシージャとの決定的な違いは呼び出し元に値を返すか否かという点です。

簡潔に言うと!?

引数付きSubプロシージャは単体では呼び出せず引数をもらわなければ動かすことができない

Functionプロシージャは単体では呼び出せず、呼び出し元に値を返す

こういう事ですね。

やってみましょう

引数付きSubプロシージャ

では実際に普通のSubプロシージャから引数付きSubプロシージャを呼び出してみましょう。

Sub test()

    Dim dates As Date
    
    dates = Date
    
    引数付きプロシージャ "今日の日付は" & dates & "です"

End Sub

Sub 引数付きプロシージャ(a As String)

    Debug.Print a

End Sub

この様に()内に引数を指定したプロシージャに値を渡すことで受け取ったプロシージャでその値を保持したまま処理をすることができます。

気を付けなければいけないのは渡す側の引数の型と引数として指定する変数の型は一致していなければいけない事です。

今回のケースは変数をDate型変数として宣言してますが、結果的に文字列と組み合わせているのでString型として成っています。

Functionプロシージャ

Sub test()

    Dim dates As Date
    
    dates = Date
        
    Debug.Print ファンクション(dates)

End Sub

Function ファンクション(a As Date)

    ファンクション = "今日の日付は" & a & "です"

End Function

この様にFunctionは自分自身に値を入れ込んで呼び出し元に値を返します。

この形はちょっと違和感があるかもしれませんが、いわゆるsumとかの普通の関数と考え方は一緒ですね。

自作関数。それがFunctionプロシージャです。

では、ここで引数付きSubプロシージャをもっと活かすために次回はPublic変数をお勉強していきましょう!

<<Stopとブレークポイント  Public変数>>

スポンサーリンク

シェアする

フォローする