Execel VBAのプログラミングで利用するPublic SubとPublic Function。
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文がでてきますので、一つずつ処理を追っていきましょう。
まずは下記の流れの手順で処理をデバッグしていきます。
<実行手順>
- 「Sub Main」を実行していきましょう。
- Call文は、そのサブルーチンにジャンプします。
- Move_Callへ移ります。
- 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」に値が入っていきます。
こうしてデータの引き渡しが行わていきます。
おすすめExcelVBA参考書のご案内
このように、ExcelVBAについても色々な学ぶには、参考書などなしで習熟するとかなり時間を要します。上記のようなExcelVBAに関してもっと調べる環境があったらと感じる方も少なくありません。
初心者向けVBA教材
そこで、おすすめなのが私自身もVBAやエクセル関数を利用する際に今でもよく利用している下記参考書がかなり有益な情報が入っています。しかもサンプル動画や電話環サポート付きという優れもの。
7500万部売れていて、かなり実用性のある内容が盛り込まれているので、よくExcelVBAなどを利用される際には、こちらの教本が一冊あるだけで色々な構文や基本的なVBAの記述方法に対しても汎用性が効くようになるので、ぜひ上手に活用してみて下さい。
中上級者向けVBA教材
そして、こちらがVBAの基礎をある程度理解された方であれば、実践ベースでかなり作り込める内容が盛り込まれているので、逆引きに使ったり、かなり発展的なVBAコーディングを記述できるようになります。
ちなみに私はどちらとも持っており、今でもちょくちょく活用しています。
まとめ
このように、Public Sub とPublic Functionは、どこのModuleからも呼び出すことができるサブルーチンの一つですが、そのサブルーチンから呼び出す際にも、
ポイント
- 「値を返すことができないのが =Sub」
- 「値を返すことができるのが =Function」
です。使い方をしっかり理解して、上手にCall文として、呼び出せるコーディングができるようになるとよいですね。
【Excel-VBA】「Private sub」と「Private function」「Function」の違いとは
続きを見る
【よく読まれている記事】
✅【2020年度版】ダイエット効果・ウィルス対策に効果絶大!おすすめチャーガ人気ランキング5選
✅【医師監修】足が臭いのを2週間で改善した!おすすめ対策グッズ5選
✅【令和元年更新】子供の口臭がひどい!10の原因と医師おすすめ対処法とは
✅【2020年版】現役SEが教える小学校低学年(1~3年生)向けおすすめプログラミング教室3選
✅【Excel-VBA】「Private sub」と「Private function」「Function」の違いとは
✅【Excel-VBA】For文とDo Untillの違い~処理が速いのはどっち?