4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【ExcelVBA】サブプロシージャを[マクロ]ダイアログに表示させない設定

Posted at

はじめに

Excelでマクロを書いていると、マクロのコード量がそれなりに増えてきて、複数の標準モジュールを使うことがあります。
このように複数の標準モジュールを使う場合、異なる標準モジュールのサブプロシージャを呼び出す際に、呼び出される側のサブプロシージャにPublicキーワードを付けて、どの標準モジュールからも呼び出せるように設定すると思います。

ですが、サブプロシージャにPublicキーワードを付けると、[マクロ]ダイアログ上に一覧表示されてしまうので、ユーザーが誤操作する可能性が出てきます。
このようなケースでは、「サブプロシージャを[マクロ]ダイアログに表示させない設定」が少し役に立ちます。

image.png

設定方法

  • [マクロ]ダイアログから直接呼び出されたくないサブプロシージャがある標準モジュールで、以下のように先頭行に「Option Private Module」と記入すると、[マクロ]ダイアログ上にこの標準モジュール内の全てのサブプロシージャ名が表示されません。
  • この時、「Publicキーワード付きのサブプロシージャ」については、他の標準モジュールから利用できるだけでなく、[マクロ]ダイアログ上にもサブプロシージャ名が表示されません。
  • 一方、「Privateキーワード付きのサブプロシージャ」については、「Option Private Module」の有無に関わらず、同一の標準モジュール内でしか呼び出せません。
Module1
Option Private Module

Public Sub test1()
    MsgBox "[マクロ]ダイアログ上に表示されませんが、他の標準モジュールからも呼び出せます。"
End Sub

Private Sub test2()
    MsgBox "[マクロ]ダイアログ上に表示されず、この標準モジュール内でしか呼び出せません"
End Sub

参考URL

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?