【VBA講座】SubプロシージャとFnctionプロシージャの特徴と使い分け

プロシージャには
 ・Subプロシージャ
 ・Functionプロシージャ
の2つがあります!

2つのプロシージャの比較により
 ・特徴
 ・使い分け方法
を説明します!
※ポイントは「比較」です。

PR

Subプロシージャの特徴

Subプロシージャには
 ①Excel上のボタン等に「実行するマクロ」として設定できる
 ②返り値は返せない
という特徴があります。

上記①について具体的に言うと
 ・「Subプロシージャ」と「Functionプロシージャ」が存在する場合、
 ・Excel上のボタンに設定できるのは「Subプロシージャ」のみ
です。
※SubプロシージャにPrivateステートメントを使用すると設定できなくなりますが。
※ここではPrivateステートメントは気にしないでください。

「Subプロシージャ」と「Functionプロシージャ」が存在する場合
「Subプロシージャ」と「Functionプロシージャ」が存在する場合
Excel上のボタンに設定できるのは「SUBプロシージャ」のみ
Excel上のボタンに設定できるのは「Subプロシージャ」のみ
PR

Functionプロシージャの特徴

Functionプロシージャには
 ・Subプロシージャと真逆の特徴
があります。

Functionプロシージャには
 ①Excel上のボタン等に「実行するマクロ」として設定できない
 ②返り値を返せる
という特徴があります。

返り値を返せる(返り値を設定できる)
返り値を返せる(返り値を設定できる)
PR

2つのプロシージャの使い分け

2つのプロシージャの違い
 ・Excelファイル利用者から直接実行できるかできないか
 ・戻り値を返すか返さないか
です。
※上記以外に違いは無いです(私が調べた限りは)。例えばどちらも引数を設定できます。

よって使い分けの判断基準は
 ・Excelファイル利用者から直接実行できるようにしたいかしたくないか
 ・戻り値を返したいか返す必要が無いか
です。

上記より、Subプロシージャは以下の時に使用します。

Subプロシージャを使う時
  • Excelファイル利用者から直接実行できるようにしたい時
    ※Excel上のボタン等に「実行するマクロ」として設定できるようにしたい時


上記より、Functionプロシージャは以下の時に使用します。

Functionプロシージャを使う時
  • Excelファイル利用者から直接実行できないようにしたい時
    ※VBA内部からのみ実行できるようにしたい時

  • 戻り値を返したい
PR

参考①(特徴や使い分け方法を把握するには)

VBAのプロシージャに限らず、
 ・特徴や使い分け方法を把握するには「比較」をする
必要があります。
※今回は「Subプロシージャ」と「Functionプロシージャ」を比較して、「特徴や使い分け方法」を把握しました。

比較」をせずにいい加減なことを言っている人が珍しくないように見えます。良くないことだと思います。

例えば以下です。

例)「VBAはExcelがあればプログラミングができる、環境構築が不要だから便利」という意見
 
 →VBA以外にも環境構築が不要なプログラミング言語は存在する。Power Shell等。

 →「VBAが特別便利である理由」になっていない。Power Shell等も同様のため。

 →「VBAは環境構築が不要で便利」は、間違ってはいない。

 →だが「VBAは特別」とミスリードしている(騙している)ように見えなくもない。

 →ミスリードする(騙す)のは良くないことだと思う。

 →他のプログラミング言語と「比較」をすれば、簡単に分かること。

PR

参考②

2つのプロシージャの詳細は、公式サイトをご確認ください。

●Subプロシージャ(=Subステートメント)



●Functionプロシージャ(=Functionステートメント)