目次
グローバル(Public)キーワードとは?
Publicキーワードは、VBA に関して変数、定数、処理(サブルーチンや関数)をモジュールの外からアクセス可能にするために使用されます。これにより、他のモジュールからPublicで宣言された変数を参照することが可能になります。
Public変数や定数の書く場所とは
SubルーチンやFunction関数内に記載すると以下の様なエラーがでます。
コンパイル エラー:Sub または Functionの属性が適切ではありません。
処理の順番を考慮せずに、End SubやEnd Functhinの後に書くと以下のようなエラーがでます。
コンパイル エラー:End Sub、End Function または End Property 以降には、コメントのみが記述できます。
Publicで宣言する場合には、Sub~End Subの前に記述が必要です。Function関数の場合も、Functhin~End Functhinの前に書くことによりエラーになりません。
Public変数や定数の書き方とは
変数や定数をPublic宣言すると、プロジェクト内のどこからでもアクセスできるようになります。
変数を宣言する時は「Dim」の代わりに「Pubilc」を使用します。
定数を宣言する時は「Pubilc」を追加して書きます。
Public Const PI As Double = 3.14159
Public myValue As Integer
SubやFunction関数をPubilcで公開
サブルーチンや関数としてもPublic宣言できます。これにより、他のモジュールからこれらの処理を呼び出せるようになります。
Public Sub MyProcedure()
' コード...
End Sub
Public Function MyFunction() As Integer
' コード...
End Function
Pubilcを使用するメリット・デメリット
【メリット】
・他のモジュールで使用したPubilc変数を使用できる
Pubilc変数を使用せずに処理が複雑なマクロを作成する際は、1つもモジュールに長いコードを書くことになります。開発者はわかりますが他の人はなかなか理解するのが難しく、メンテナンスも大変になります。動作ごとにモジュールを分けてコーディングすることで、メンテナンス性も向上します。
【デメリット(気を付けるポイント)】
・同じ名前のパブリック変数と手続きの重複
複数のモジュールで同じ名前のPublic変数や手続きを宣言した場合、名前の衝突が発生します。
・ライブラリやアドインでの名前衝突
使用している外部ライブラリやアドインに、既に宣言されているPublic変数や手続きと同じ名前のものがある場合、衝突が発生する可能性があります。これは、特に他の開発者が作成したコードやライブラリを統合する際に問題となることがございます。
・VBAのキーワードや組み込み関数との衝突
VBAの予約語や組み込み関数と同じ名前をPublic変数や処理に使用すると、意図せず動作したりエラーが発生する可能性があります。
【意図しないエラー対策】
・一意的な命名規則の採用
衝突を恐れるために、一意的なかつ説明的な名前を使用する。
・プレフィックスの使用
モジュール名やプロジェクト名などを変数名に含めることで、一意性を高めます。
・外部ライブラリの確認
外部ライブラリを使用する場合は、名前の衝突がないか事前に確認します。