【Excel-VBA】Public SubとPublic Functionの違いとは

2020年5月26日

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文がでてきますので、一つずつ処理を追っていきましょう。

まずは下記の流れの手順で処理をデバッグしていきます。

 

<実行手順>

  • 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の違い~処理が速いのはどっち?

【Excel-VBA】デバッグってなに?覚えておきたい5つのデバッグ機能

【Excel-VBA】IE操作・スクレイピングのプログラミングの書き方を理解しよう!

 

 

【おすすめ:WordPressテーマ 「WING(AFFINGER5)」について
     ※ブログを始めるなら絶対おすすめ【特典あり】


私も新たなサイト【育チルnet」にて、検索エンジンの上位の多くを占めると言われるSEO対策に強いWordpressテーマを導入してみました。

無料テーマから有料テーマにしただけなのに、0円だった収益が2~3万円まで上がったんです!

正直驚きでした!実際に利用した所感は、デザイン性能がかなり整っていますし、表示速度もやっぱりかなり速いです。人気なWordpressテーマなだけはあると感じました。

無料のテーマでも私は悪いとは思っていませんが、やはり検索エンジンからの評価はだいぶ違いました。

初めて数ヶ月ですが、もうすでに検索エンジンから大きく表示されるようになっています。

どうせやるなら、しっかりgoogle社からの評価を受けられる整えられた環境でブログ運営する方が絶対にいいと感じたため、当サイトをご覧下さった皆様にもお伝えさせて頂きました!

Wordpressテーマを新たにご検討方は、今しかない期間限定の特典も付いていますので、お早めにご確認下さい。

レビュー

公式サイト



 ←ためになったら押してね^^