Excel VBAを利用していると、Private変数とPublic変数というものをよく見かけますが、この2つの違いにはどんな点があるかわからない方のために、その違いと使い方について解説していこうと思います。
Private変数って何?
Private変数とは・・・
「同モジュール内からしか利用できない変数」と覚えておきましょう。
Public 変数って何?
Public変数とは・・・
「どこのモジュールやシートからでも利用できる変数」と覚えておきましょう。
Public 変数とPrivate変数の違いとは
Private変数とPublic変数には、どのような違いがあるの解説していきましょう。
<Private変数とPublic変数の違いとは>
- メモリー消費量: Public変数 > Private変数
- Public変数は、どこからでも呼び出せる変数だが、Private変数は同Module内からしか呼び出せない。
Private変数とPublic変数では、まずメモリー容量を消費する度合いが全く異なります。
使い方をわかりやすく解説
それでは、Private変数の使い方とPublic変数の使い方をそれぞれ例をとって解説していきましょう。
Private変数の使い方
こちらを例にして解説していきましょう。
「Private B」という変数は、Module1上に記載されているため、このModule1にあるプログラム上からであれば、どこでも使用できます。
しかし、それ以外のモジュールから呼び出すことはできません。
他のモジュール、例えばmodule2に実行処理が移った時点で、変数内の情報はクリアされてしまいます。
そのため、Module間のデータの移動がない場合にのみ使用が可能です。
Public変数の使い方
続いて、Public変数の使い方について解説していきましょう。
下記画面をご覧ください。
「Public B」という変数は、Module2上に記載されていますが、どこのModuleからでも利用できるため、Module1にあるプログラム上からでも使用できます。
そのため、実行中は、変数に値が入っている場合は、処理が終わってもデータがクリアされることはありません。
どちらを利用するべき?
それでは、どちらを利用する方がよいのかというと、これは、Moduleをどのように整理して、ソースを記述していくかによってきますので、もし同じModuleを使用して、どのように整理するかでPublicかPrivateを使い分けるとよいでしょう。
その変数の使い分けには、下記2つの方法があります。
1つのModuleを使用のみでプログラムを作成する場合
- Private変数のみでもよい
それは、同じModuleしか使用していないので、Private変数でも呼び出すことができるからです。
だから、Public変数を使用して呼び出さなくてもよいからです。
Moduleを複数に分割する場合
- Public変数を使用しよう
逆に、Moduleを分割している場合には、Module間同士で処理が移動する場合があります。そんな時には、Public変数を使用するとよいでしょう。
Public ConstとPrivate Constの定数についても覚えておこう!(おまけ)
続いて、Public ConstとPrivate Constという定数の違いについても簡単に触れておきましょう。
この2つには下記のような違いがあります。
下記画面をご覧ください。
①「intE」という定数は、Module2上に記載されていますが、どこのModuleからでも利用できます。
②「intG」という定数は、Module2上に記載されているため、Module1にあるプログラム上でしか使用することができません。
まとめ
このように、Private変数とPublic変数の違いには、メモリー容量の影響がでてきます。そのため、メモリーを多く積んだPCであれば、Public変数を使用していても問題ありません。
またPublic変数を多数使っても大きな影響を受けるものではありませんが、この変数が1万個等の個数をもち、一度に処理する場合には、非常に大きな影響を受ける可能性がありますので、乱用には十分注意しながら、Public変数を使用するようにしましょう。
また上手にPrivate変数とPublic変数を使い分けながら、プログラムが記述できるようになると非常によいですね。