VBAコード解説

【エクセルVBA初心者講座】Functionプロシージャの主な使い方について

Functionプロシージャ

今回はVBAで用いるFunctionプロシージャについて説明します。

VBAのプロシージャには大きく分けてSubプロシージャFunctionプロシージャがあります。
subプロシージャと比較すると、Functionプロシージャの使用頻度は少ないのであまり詳しく理解していない人も多いのではないでしょうか?

そんな人も安心してください。

こちらの記事ではVBA初心者の人向けに、基礎の基礎からFunctionプロシージャについて書いていきます。

Functionプロシージャとは

Subプロシージャは処理を実行するだけですが、Functionプロシージャは処理を実行した後に値を返すことができます。

Functionプロシージャの記述方法は「Function マクロ名」で始まり、「End Function」で終わります。

Function マクロ名
処理
End Function

使い方としては、Functionプロシージャ中で、Functionプロシージャの名前に値を代入することで呼び出し元へ値を返します。

この説明だけではいまいちわかりにくいので、以下で例を用いて説明していきます。

関連記事
プロシージャとcallステートメント
【エクセル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冊を紹介

続きを見る

-VBAコード解説