[ Excel VBA ] マクロで表示したくない

エクセル

VBA内では共通で使うが、手動で使えないようにしたい

VBAで共用のプロシージャを作成し、Publicにすると手動でも動かせちゃうので見えないようにする方法。

動作に関しては「Excel for Microsoft365」にて検証しています。過去のバージョンやMicrosoft365のバージョンアップ等により、異なる動作となる場合があります。

PrivateとPublic

Privateで作ると見えなくなるけどVBA内部からもスコープが制限される。Publicで作ると下図のように見えてしまい手動で動かせるようになってしまう。

対応策

モジュールの先頭に「Option Private Module」を記述します。モジュール単位なので手動でも公開したいプロシージャがあるなら標準モジュールを2つ作って公開用と非公開用に分けることになります。

Option Private Module

Public sub aaaa()
    MsgBox "public test"
End sub

コメント

タイトルとURLをコピーしました