VBA PrivateSubとPublicSubの違いを解説!



The following two tabs change content below.

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうも、takaです(^^♪

さて、VBAを勉強している中のサンプルコードなどを見ている中で【PrivateSub】と【PublicSub】を見たことをありませんか?

意外や意外、この違いを知らない方が多いんです(笑)

というわけで今回は【PrivateSub】と【PublicSub】の何が違うのかをご紹介していきたいと思います(^^)

【PrivateSub】と【PublicSub】違いはスコープ(有効範囲)が違う

さて、【PrivateSub】と【PublicSub】の違いは有効範囲の違いにあります。

どういうことか?このようなプログラムがあったとします。

画面上の段(赤枠)がモジュール1、下の段(青枠)がモジュール2とします。

まず、【モジュール1Sample】プロシージャを実行してみてください。

SampleプロシージャはCallを使ってSample1~3までを呼び出すコードです、ここで注目していただきたいのは【Sample3が別のモジュールにある】事です。

では実際に実行してみましょう!

【モジュール2のSample3】も問題なく実行できましたよね?

PrivateSubは他のモジュールから呼び出せない

では逆に【モジュール2のSample4】を実行してみましょう。

コードの内容はSampleと同じSample1~3までを呼び出すコードです。

コンパイルエラーが返されたのではないでしょうか?

これはSample1プロシージャが【Private Sub】とされているからです。

もう皆さん察しがついているかもしれませんが、【Private Subは別のモジュールから呼び出せない】という特徴があります。

逆に【Public Subは他のモジュールから呼び出すことができる】のです。

Private Sub同一のモジュールからのみ呼び出しを可能。
例:モジュール1に記載されている場合はモジュール1からのみ呼び出しが可能、モジュール2から呼び出そうとするとエラーが起きる
Public Sub別のモジュールからの呼び出しも可能。
例:モジュール1に記載されている場合はモジュール1からでも、モジュール2からでも呼び出しが可能。

ちなみにPrivatePublicを省略したとき(Sub Sampleなど)にはPublicとして扱われます。

PrivateSubはマクロのリストから除外される

あまり気にならないかもしれませんが、PrivateSubとされているプロシージャは【マクロのリストから除外されます】

下記の画像を見てもらえればお分かりだと思いますが、【PrivateSubとされているSample1だけが除外されています。】

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Twitterフォロー

 

Twitterもやってます(^^♪Excelについてはあまり触れませんがブログの更新のお知らせはツイートしています(^^♪

Twitterフォロー

 



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です