【Excel-VBA】Public SubとPublic Functionの違いとは
Execel VBAのプログラミングで利用するPublic SubとPublic Function。

今回は、そんな悩みについて、わかりやすく解説していきましょう。
Public Subとは
Public Subは、エクセルマクロの画面に表示されるものが、このPublic Subであり、これは、「Sub」という記載のものと同じものを表します。
Public Sub = Sub
つまり、「Sub」は、Publicが省略されたものだったのですね。
下記図をご覧ください。
①が、Public Subの記述をしたサブルーチンになっており、
②が、Public Functionの記述をしたサブルーチンです。
Public Functionとは
Public Functionは、このサブルーチン自体に値をもつことができる(変数にできる)という特徴をもっています。
Public Function = Function
と記載しても同じ意味を表します。どちらで使用しても間違えではありません。
つまり、「Function」というのは、Publicが省略されたものだったのですね。
下記図をご覧ください。
Functionの場合、後ろにInteger型が宣言されていることがわかりますか?
このTestMoveという名称にInteger型の変数が宣言されています。この名称にも数値を返すことができるという意味です。
Sub とFunctionの違いとは
それでは、まSubとFunctionの違いについて解説していきましょう。
<SubとFunctionの違い>
- Sub :値が返せない
- Function:値が返せるもの。

ですよね。
Functionで指定しているサブルーチンは、その登録名称自体に値を返すことができるというメリットをもっています。
値を返すことができるので、その分メモリも消費することは覚えておいてくださいね。
Public Sub と Public function の使い方について
それでは、実際の使い方を画面を見ながら解説していきましょう。
Sub Mainを実行していきましょう。すると複数のCall文がでてきますので、一つずつ処理を追っていきましょう。
まずは下記の流れの手順で処理をデバッグしていきます。
<実行手順>
- 1.「Sub Main」を実行していきましょう。
- 2.Call文は、そのサブルーチンにジャンプします。
- 3.Move_Callへ移ります。
- 4.Test_Moveへ移ります。
【実際の処理の一例】
【Subの場合】
「Move_Call」というCall文が、Sub Mainの中に記載されているため、処理は行われ、Move_Callのサブルーチンにジャンプします。
ここの処理を通過しますが、Functionではないので、値をSub Mainに引き渡すことはありません。
【Functionの場合】
しかし、Functionの場合、Test_MoveにInteger型を宣言しています。
①このTestMoveのCall文(サブルーチン)に入ると、intCode変数に値が6が計算されます。
②そして赤枠では、TestMoveというサブルーチン名がInteger型の変数となって、intCodeの6が、最後の行でTestMoveに引き渡されています。
このサブルーチンが終わると、またSub Mainの続きに戻るわけですが、この6という数値が、「→」のようにSub Mainの中の「intValue」に値が入っていきます。
こうしてデータの引き渡しが行わていきます。
まとめ
このように、Public Sub とPublic Functionは、どこのModuleからも呼び出すことができるサブルーチンの一つですが、そのサブルーチンから呼び出す際にも、
・「値を返すことができないのが =Sub」
・「値を返すことができるのが =Function」
です。使い方をしっかり理解して、上手にCall文として、呼び出せるコーディングができるようになるとよいですね。
【よく読まれている記事】
✅【2020年度版】ダイエット効果・ウィルス対策に効果絶大!おすすめチャーガ人気ランキング5選
✅【医師監修】足が臭いのを2週間で改善した!おすすめ対策グッズ5選
✅【令和元年更新】子供の口臭がひどい!10の原因と医師おすすめ対処法とは
✅【2020年版】現役SEが教える小学校低学年(1~3年生)向けおすすめプログラミング教室3選
✅【Excel-VBA】「Private sub」と「Private function」「Function」の違いとは
✅【Excel-VBA】For文とDo Untillの違い~処理が速いのはどっち?
ディスカッション
コメント一覧
まだ、コメントがありません