今回はVBAで用いるFunctionプロシージャについて説明します。
VBAのプロシージャには大きく分けてSubプロシージャとFunctionプロシージャがあります。
subプロシージャと比較すると、Functionプロシージャの使用頻度は少ないのであまり詳しく理解していない人も多いのではないでしょうか?
そんな人も安心してください。
こちらの記事ではVBA初心者の人向けに、基礎の基礎からFunctionプロシージャについて書いていきます。
Functionプロシージャとは
Subプロシージャは処理を実行するだけですが、Functionプロシージャは処理を実行した後に値を返すことができます。
Functionプロシージャの記述方法は「Function マクロ名」で始まり、「End Function」で終わります。
Function マクロ名
処理
End Function
使い方としては、Functionプロシージャ中で、Functionプロシージャの名前に値を代入することで呼び出し元へ値を返します。
この説明だけではいまいちわかりにくいので、以下で例を用いて説明していきます。
【エクセルVBA初心者講座】別のプロシージャを呼び出すCallステートメント
続きを見る
Functionプロシージャの使用例
VBAでSubプロシージャ「test1」からFunctionプロシージャ「test3」を呼び出すためには、以下のように記述します。
Sub test1()
Range("A1").value = 10 →①
Range("B1").value = test3 →②test3の呼び出し、④値を受け取る
End Sub
Function test3()
test3 = range("A1") * 2 →③計算結果をtest1に返す
End Function
このVBAを実行した場合の処理の流れを説明します。
test1を実行
①アクティブシートのセルA1に10を代入
②test3のFunctionプロシージャの呼び出し
③セルA1の値(10)に2をかけて、その計算結果(20)を呼び出し元のtest1に渡す
④セルB1に受け取った値(20)を代入
このようにFunctionプロシージャの中でプロシージャ名に返したい値を代入する(test3 = range(“A1”) * 2)ことで、呼び出し元へ値を返すことができます(Range(“B1”).value = test3)。
SubとFunctionの使い分け
SubプロシージャとFunctionプロシージャのどちらで作ればいいんだろう?
いざVBAを作成する場面で、どちらを使えばいいのか迷ったとしても、それぞれのプロシージャの機能を理解していれば簡単に判断することができます。
SubプロシージャとFunctionプロシージャの一番の違いは、値を返せるかどうかです。
そのため、呼び出し元へ値を返す必要がないのであれば「Subプロシージャ」、呼び出し元へ値を返す必要があるのであれば「Functionプロシージャ」を選択します。
Subプロシージャ | 値を返す必要がない場合 |
Functionプロシージャ | 値を返す必要がある場合 |
Functionプロシージャのおさらい
VBAを利用するうちに、Functionプロシージャを使うタイミングがいつかでてくるはずです
なぜなら、処理内容によってはプロシージャを独立させることでメンテナンス性を高めたりすることができるためです。
基本はSubプロシージャで十分ですが、Functionプロシージャも適切に使い分けていきましょう!
【エクセル マクロ/VBA】初心者が独学勉強するための本|おすすめ2冊を紹介
続きを見る