【Excel-VBA】「Private sub」と「Private function」「Function」の違いとは

2021年2月18日

Excel VBAでプログラミングを記述する際、各サブルーチン単位で文頭に表示されている「Private Sub」「Private Function」「Function」。

 

Left Caption

主婦

SubとFunctionって結局どんな風に使い分けるんですか?

Right Caption

管理者

SubとFunctionは値が持てるか、持てないか?なんですが、分かりますか?
Left Caption

主婦

え、え、えっと~。。。

 

それでは、これらをどのように使い分けていくのかわからない方のために、各々の使い方とこの3つの違いについて詳しく解説していきましょう。

 

「Private Sub」の使い方

Private Subとは・・・・

Private自体の意味としても、「個人的な」なんて意味があります。IT用語としても「狭い範囲」という意味で使われています。

Privateは、同一Module内でしか呼び出すことができないサブルーチンのことを言います。またSubは、値を持てないことを意味します。

Module1内にあるサブルーチンから、別のModule2にあるサブルーチンをCall文で呼び出した場合、位置がModule2に移動してしまいます。

このタイミングでModule1上で入っていた変数の中身は全てなくなり、解放されてしまいます。

これが「Private」の意味を示します。

 

<ポイント>

※Privateの場合は、ModuleがCall文などで別のModuleに移動してしまうと、その変数の中に入れたデータがクリアされてしまうのが、Privateで宣言した場合です。

 

「Private Function」の使い方

これに対して、もう一つ「Private Function」というのがあります。

Private Functionとは・・・・

これは何を示すのかというと、このFunctionと表記するとサブルーチン自体に値をもつことができるということです。

下記をご確認下さい。

サブルーチンとは、この赤枠で言えば、「TestF」のことです。線で区切られている一つ一つがサブルーチンです。

このTestFが横のInteger型の変数として値を持てます。

 

【Functionのサブルーチンについて】

TestFそのものを変数にすることができ、Integer型で値を出力することができます。最後のブレークポイントでintCodeからTestFに値を引き渡しています。

 

Right Caption

管理者

逆に、その上のサブルーチンの中でSubと表示されているものには、横に変数の型の表示がないのが特徴です!

 

「Function」の使い方

Functionとは・・・

Public Function」の省略形で、使い方は、上記で説明した「Private Function」と同じです。

但し、Private Functionとは、下記の点が異なります。

 

<Functionの特徴>

  • どこのModuleからでも呼び出すことができる
  • そのサブルーチン自体に値を返すことができる

 

という利点があります。

3つに共通することとは

 

この上記3つに共通することが一つだけあります。それは、こちらをご覧ください。「Private Sub」「Private Function」「Function」の3つはマクロ名には表示されません。

サブルーチン自体に値を持てることができる「Function」「Private Function」のように、「Function」という文字が記述されているものは、マクロ名としてもつことはできません。

又「Private Sub」というものに関しても同様マクロ名には表示されません。表示されるのは、「Sub」「Public Sub」のみとなります。覚えておきましょう。

 

「Private sub」と「Private function」「Function」の3つの違いとは

それでは、この3つの違いについて詳しく解説していきましょう。

まず「PrivateとPublic」「SubとFunction」2つの分解して考えましょう。

 

「PrivateとPublic」の違い

宣言名特徴
PrivateそのModule内でしか使えない
Public色々な所から呼び出せる
マクロ名に表示される

 

 

「SubとFunction」の違い

宣言名特徴
Subそのサブルーチン自体に値が持てない
Functionそのサブルーチン自体に値が持てる

 

またこれに対して、Functioin」という文字が記述されているものに関しては、このサブルーチン自体に値をもつことができることを意味します。

 

<SubとFunctionの違いは?>

・値を持てるか持てないか!

 

「SubとFunction」の違いは「値を持てるか持てないか」

上記の内容をかみ砕いて解説しておきましょう。

上から2つ目のサブルーチン「Sub Main」をご覧下さい。このサブルーチンを最初に実行すると、途中に「Call TestF」があります。ここに来ると、下赤枠のサブルーチンにジャンプして処理が走ります。つまり、「ここのサブルーチンに行ってね。」となるわけですが、この中に処理が流れると、intCodeで「3*2」の掛け算行われ、またTestFのその答え6が戻るように記載されています。

この計算が終わると、また「Sub Main」のサブルーチンに移動して、処理が終わります。つまり、この結果6は変数TestFに引き渡されているので、Sub Mainの中でもTestFという値に6が入ったまま、その変数を利用できるということです。

これが、上記で説明した「値を持てるか持てないか」です。

※Functionがつくものには、この名称自体を変数にすることができます。

 

これらが理解できれば3つの違いがおのずと分かってくるかと思います。

 

結局どれを使えば良いの?「Public」と同等のもの

結局どれを使えばよいのか?というところに行きつくかと思いますが、

ここまで聞いてあまりよくわからなかった場合には、「Public Function」「Function」「Sub」を使用していれば、基本的に問題ありません。

 

「Private」を使用するのは、メモリー容量を低減するために利用されます。

 

なので、まずは記述を学びたいという方であれば、上記3つを使用することをおすすめします。またもう少し理解を深めたい方は、下記もみておきましょう。

【Excel-VBA】「Public sub」と「Private sub」と「Sub」の3つの違いとは

 

まとめ

このように、3つの違いは、メモリー容量の消費量が多きく関わってきます。

特にシステムが大きなものであればあるほど、そのメモリー使用量が肥大化するため、できるだけPrivateを活用しながら、メモリーを消費しないプログラミンギ技術が要求されます。

しっかり活用方法を覚えて、上手にプログラミングしていきましょう。

 

 

 

もしよろしければフォローして下さい。ブログの励みになります(^^)

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


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

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

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

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

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

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

新たにWordpressテーマをご検討方は、当サイトからのご購入でしか受け取れない5つの特典も付いていますので、ご興味のある方はぜひご利用下さい。
購入者限定特典はこちら

レビュー

【当サイト限定特典付き】購入はこちら



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