もくじ
#### taka
#### 最新記事 by taka (全て見る)
- 『雑記』最近の私の話～ - 2019年9月26日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
どうも、taka(@takabou63)です(^^♪
さて、VBAを勉強している中のサンプルコードなどを見ている中で【PrivateSub】と【PublicSub】を見たことをありませんか？
意外や意外、この違いを知らない方が多いんです(笑)
というわけで今回は【PrivateSub】と【PublicSub】の何が違うのかをご紹介していきたいと思います(^^)
## 【PrivateSub】と【PublicSub】違いはスコープ(有効範囲)が違う
さて、【PrivateSub】と【PublicSub】の違いは有効範囲の違いにあります。
どういうことか？このようなプログラムがあったとします。
画面上の段(赤枠)が
モジュール１、下の段(青枠)が モジュール２とします。
まず、【モジュール１の
Sample】プロシージャを実行してみてください。
SampleプロシージャはCallを使ってSample１～3までを呼び出すコードです、ここで注目していただきたいのは【
Sample３が別のモジュールにある】事です。
では実際に実行してみましょう！
'モジュール1に記載--------------- Sub Sample() Call Sample1 Call Sample2 Call Sample3 End Sub Private Sub Sample1() '同じモジュール内ならPrivateもPublicも関係がない MsgBox "Sample1呼び出されました" End Sub Public Sub Sample2() MsgBox "Sample2呼び出されました" End Sub 'モジュール2に記載--------------- Public Sub Sample3() 'Public Sub はほかのモジュールからでも呼び出せる MsgBox "Sample3呼び出されました" End Sub Private Sub Sample4() Call Sample1 Call Sample2 Call Sample3 End Sub
【モジュール２のSample３】も問題なく実行できましたよね？
### PrivateSubは他のモジュールから呼び出せない
では逆に【モジュール２のSample4】を実行してみましょう。
コードの内容はSampleと同じSample１～3までを呼び出すコードです。
コンパイルエラーが返されたのではないでしょうか？
これはSample１プロシージャが【Private Sub】とされているからです。
もう皆さん察しがついているかもしれませんが、【
Private Subは別のモジュールから呼び出せない】という特徴があります。
逆に【
Public Subは他のモジュールから呼び出すことができる】のです。
|Private Sub
同一のモジュールからのみ呼び出しを可能。
例：モジュール１に記載されている場合はモジュール１からのみ呼び出しが可能、モジュール２から呼び出そうとするとエラーが起きる
|Public Sub
別のモジュールからの呼び出しも可能。
例：モジュール１に記載されている場合はモジュール１からでも、モジュール２からでも呼び出しが可能。
ちなみに
Privateや Publicを省略したとき(Sub Sampleなど)には Publicとして扱われます。
### PrivateSubはマクロのリストから除外される
あまり気にならないかもしれませんが、PrivateSubとされているプロシージャは【マクロのリストから除外されます】
下記の画像を見てもらえればお分かりだと思いますが、【PrivateSubとされているSample１だけが除外されています。】
#### フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
■TwitterフォローFollow @taka_pc1027
■YouTubeチャンネル登録
#### ファイルやコードの利用、WEBサイトの利用についてサンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。
#### Sponsored Link
WordPressでブログを始めるなら
WordPress簡単インストール＆安心の安定性
この記事が気に入ったら
いいねしよう！
最新記事をお届けします。