プロシージャには
・Subプロシージャ
・Functionプロシージャ
の2つがあります!
2つのプロシージャの比較により
・特徴
・使い分け方法
を説明します!
※ポイントは「比較」です。
Subプロシージャの特徴
Subプロシージャには
①Excel上のボタン等に「実行するマクロ」として設定できる
②返り値は返せない
という特徴があります。
上記①について具体的に言うと
・「Subプロシージャ」と「Functionプロシージャ」が存在する場合、
・Excel上のボタンに設定できるのは「Subプロシージャ」のみ
です。
※SubプロシージャにPrivateステートメントを使用すると設定できなくなりますが。
※ここではPrivateステートメントは気にしないでください。
Functionプロシージャの特徴
Functionプロシージャには
・Subプロシージャと真逆の特徴
があります。
Functionプロシージャには
①Excel上のボタン等に「実行するマクロ」として設定できない
②返り値を返せる
という特徴があります。
2つのプロシージャの使い分け
2つのプロシージャの違いは
・Excelファイル利用者から直接実行できるか、できないか
・戻り値を返すか、返さないか
です。
※上記以外に違いは無いです(私が調べた限りは)。例えばどちらも引数を設定できます。
よって使い分けの判断基準は
・Excelファイル利用者から直接実行できるようにしたいか、したくないか
・戻り値を返したいか、返す必要が無いか
です。
上記より、Subプロシージャは以下の時に使用します。
上記より、Functionプロシージャは以下の時に使用します。
参考①(特徴や使い分け方法を把握するには)
VBAのプロシージャに限らず、
・特徴や使い分け方法を把握するには「比較」をする
必要があります。
※今回は「Subプロシージャ」と「Functionプロシージャ」を比較して、「特徴や使い分け方法」を把握しました。
「比較」をせずにいい加減なことを言っている人が珍しくないように見えます。良くないことだと思います。
例えば以下です。
例)「VBAはExcelがあればプログラミングができる、環境構築が不要だから便利」という意見
→VBA以外にも環境構築が不要なプログラミング言語は存在する。Power Shell等。
→「VBAが特別便利である理由」になっていない。Power Shell等も同様のため。
→「VBAは環境構築が不要で便利」は、間違ってはいない。
→だが「VBAは特別」とミスリードしている(騙している)ように見えなくもない。
→ミスリードする(騙す)のは良くないことだと思う。
→他のプログラミング言語と「比較」をすれば、簡単に分かること。
参考②
2つのプロシージャの詳細は、公式サイトをご確認ください。
●Subプロシージャ(=Subステートメント)
●Functionプロシージャ(=Functionステートメント)