'戻り値のあるプログラムコードの入れ物 Function プログラム名() As Long ’↑この間にプログラムコードを入力する↓ ’処理結果を代入する プログラム名 = 100 End Function
戻り値のあるプログラムの作成には「Function」プロシージャを使用します
戻り値とFunctionプロシージャ
戻り値とは、処理の結果を呼び出し元に戻す結果の事です
要は関数の動きが同等のものとなります
例えば、Date関数は引数無しの関数です
「Date」とすれば、本日日付が返されます
この本日日付が戻り値と呼ばれます
Functionプロシージャでは、戻り値の代入先はプロシージャ名自身になりますので、例の内の「プログラム名 = 100」がそれに当たります
ここで、戻り値を取得させています
これが無いと戻り値は初期値のままになってしまいます
例のコードでは、プログラム内では最後に「100」を代入しているので常に「100」を返す関数になります
関数と同じという意味の通り、FunctionプロシージャはCallで呼び出さずに関数のように記載して実行できます
画像の動きを確認してみます
まずは、Subプロシージャによって関数の様にプログラム名のみで実行されます
今回はMsgBoxの文字として取得しています
このFunctionプロシージャは常に100を返すので、MsgBoxでは「200+100」が実行されて、300のメッセージが表示されます
またSubと違うのが、プロシージャ名の後にデータ型の指定を行う点です
今回は数値なのでLong型になっています
他の型も使用可能です
関数の便利さは実感出来ているはずですので、このFunctionプロシージャも使いこなすと非常に便利な機能なのが分かってきます
ユーザー定義関数とは
また、ユーザー定義関数というものの作成も行えます
セルに「=プログラム名()」と入力して確定させてみてください
すると数値の100が表示されます
これは関数と同じ動きなので、データの更新で再計算されます(この関数は意味ありませんが)
リアルタイムでの実行が可能になるので、関数を頑張って作成するよりはるかに楽に目的の関数を作成できたりします
なんなら、Functionプロシージャ内をワークシート関数だけで作成してしまって
本来ならネストされまくってる関数をたった1つの関数で実行してるようにも見せられます(こんなことをしても自己満足ですけどね~)
ただしループ処理やエラー対応にはしっかり準備してから使用してください
ユーザー定義関数でのバグは、Excelが強制終了することがあります
関連の記事