引数付き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変数をお勉強していきましょう!