はじめに
Excelでマクロを書いていると、マクロのコード量がそれなりに増えてきて、複数の標準モジュールを使うことがあります。
このように複数の標準モジュールを使う場合、異なる標準モジュールのサブプロシージャを呼び出す際に、呼び出される側のサブプロシージャにPublicキーワードを付けて、どの標準モジュールからも呼び出せるように設定すると思います。
ですが、サブプロシージャにPublicキーワードを付けると、[マクロ]ダイアログ上に一覧表示されてしまうので、ユーザーが誤操作する可能性が出てきます。
このようなケースでは、「サブプロシージャを[マクロ]ダイアログに表示させない設定」が少し役に立ちます。
設定方法
- [マクロ]ダイアログから直接呼び出されたくないサブプロシージャがある標準モジュールで、以下のように先頭行に「Option Private Module」と記入すると、[マクロ]ダイアログ上にこの標準モジュール内の全てのサブプロシージャ名が表示されません。
- この時、「Publicキーワード付きのサブプロシージャ」については、他の標準モジュールから利用できるだけでなく、[マクロ]ダイアログ上にもサブプロシージャ名が表示されません。
- 一方、「Privateキーワード付きのサブプロシージャ」については、「Option Private Module」の有無に関わらず、同一の標準モジュール内でしか呼び出せません。
Module1
Option Private Module
Public Sub test1()
MsgBox "[マクロ]ダイアログ上に表示されませんが、他の標準モジュールからも呼び出せます。"
End Sub
Private Sub test2()
MsgBox "[マクロ]ダイアログ上に表示されず、この標準モジュール内でしか呼び出せません"
End Sub