VBAの書き始め【Function】

前回の記事ではSubプロシージャについて説明しましたが、今回の記事ではFunctionプロシージャを説明していきたいと思います。

まずFunctionプロシージャの特徴として、値を返すという特徴を持っています。
例えばSubプロシージャの途中でFunctionプロシージャを記載するとFunctionプロシージャで処理した結果をSubプロシージャへ返してくれるのです。

例)Function Sample()戻り値のデータ型
   ここに処理を記載
   Sample = 戻り値
  End Function

上記の様にFunctionには戻り値というものが付いてきます。
では1行ずつ説明していきます。

Function Sample()戻り値のデータ型


上記の部分では、プロシージャ名のSampleという名前の箱戻り値のデータ型の形で用意します。
この戻り値のデータ型については変数のデータ型を参照してください。

次に処理の記載ですが、この処理の内容に関しては自分で処理したい内容になりますので、その都度自分で作成が必要です。

Sample = 戻り値


ここが重要です。
1行目で作ったFunctionプロシージャの名前にある、Sampleという箱に戻り値を入れるのですが、この時戻り値のデータ型と=の後の戻り値があってなければ代入する事が出来ませんので注意してください。

End Function


EndFunctionでFunctionプロシージャを終了します。

では実際にSubプロシージャへ値を戻してみましょう。
例)Sub 足し算()
   MsgBox 結果
  End Sub
  Function 結果()As Long
   結果 = 1 + 1
  End Function
上記のコードを実行した際、Excelにはメッセージボックスには2が表示されます。
これはSubプロシージャのコードを実行した際に【結果】というFunctionプロシージャの数字が戻り値として代入される為です。

ではこちらも順を追って説明します。

まず、Subプロシージャを実行すると【MsgBox 結果】の部分にある結果に入ってる値をメッセージボックスで表示しようとします。
ただ、そのままだと結果に値は入っていないので表示する前に、その結果に入る値をFunctionプロシージャで処理し、戻り値としてSubプロシージャへ返してくれるので、戻り値が入ったらメッセージボックスを表示して終了となります。

注意点としては、Functionプロシージャ名に戻り値の代入を忘れない事と戻り値のデータ型を間違えないようにする事です。

個人的にはFunctionプロシージャを使うよりはSubプロシージャからの変数の受け渡しをする事の方が多いので、上記のような使い方をすることは少ないです。
ただし、Functionプロシージャにはとても便利な使い方があるので、その使い方については次回のFunctionプロシージャの応用で説明しますね。