ほとんどの読者は、VBAを使用して関数とサブルーチンを作成できることをすでに知っています。これは、VBAの名前の由来であるVisualBasicと同じです。通常、次の3つの条件のいずれかが満たされない限り、[マクロ]ダイアログボックスを表示すると(Alt + F8を押す)、マクロがマクロリストに表示されます。

※マクロは関数です。関数は通常、情報を返し、情報を関数に渡す必要があります。マクロリストからマクロを実行すると、これらのいずれも発生しないため、Excelではリストする必要はありません。 Excelで非常に便利なユーザー定義関数は、結局のところ関数であるため、[マクロ]ダイアログボックスには表示されません。

  • マクロはパラメータを持つサブルーチンです。 Excelでは、パラメーターが必要であり、マクロリストからサブルーチンを選択してパラメーターを指定することはできないため、リストする必要はないと想定しています。

  • サブルーチンはプライベートとして宣言されています。これは、サブルーチンが宣言されているモジュール内のコーディングにのみ役立つことを意味します。

[マクロ]ダイアログボックスに表示される唯一のタイプのマクロは、パラメーターのない非プライベートサブルーチンです。ただし、特定の状況では、それらもリストされたくない場合があります。たとえば、単独で呼び出されても何も役に立たないユニバーサルサブルーチンを作成したとします。それらは他のコードから呼び出されるように設計されています。たとえば、次のマクロについて考えてみます。

Sub MySub()

MsgBox "We are running the macro"

End Sub

このマクロは、[マクロ]ダイアログボックスに表示されます。表示したくない場合は、実行できる解決策がいくつかあります。これらはすべて、マクロがマクロリストから除外される3つの方法を調べることで明らかになります。最初の解決策は、コードを調べて、それが本当に「ユニバーサル」であるかどうかを確認することです。複数のモジュールからのコードが必要ですか?そうでない場合は、サブルーチンPrivateを宣言します。 [マクロ]ダイアログボックスには表示されません。したがって、前の問題マクロは次のようになります。

Private Sub MySub()

MsgBox "We are running the macro"

End Sub

マクロを非表示にする2番目の方法は、単にマクロを関数に変換することです。

これは、特に値を返したくない場合は奇妙に聞こえるかもしれませんが、完全に許容されます。 VBAでは、関数は値を返す必要はありません。戻り値を明示的に宣言しない場合、関数はデフォルトの結果を返します(たとえば、ブール値はFalseを返し、文字列は “”を返します)。したがって、問題のプロシージャを関数に変更して、次のように宣言できます。

Function MySub() As Boolean     MsgBox "We are running the macro"

End Function

この手順は[マクロ]ダイアログボックスには表示されず、引数は必要ありません。デフォルトではFalseを返しますが、この結果は無視できます。変更するサブルーチンの性質に応じて、コードで実行されていることの成功に応じて、変換された関数がTrueまたはFalseを返すことを実際に許可することが有益な場合があります。この場合、変換された関数は実際の関数であり、値の何かを返すため、実際にはダミーのサブルーチンではありません。

3番目の解決策は、サブルーチンでいくつかのダミーパラメータを使用することです。サブルーチン自体の中でそれらを使用して何もする必要はありませんが、それらを含めることにより、プロシージャはマクロリストにリストされません。このシナリオでは、問題のサブルーチンは次のように変更されます。

Sub MySub(Void As Integer)

MsgBox "We are running the macro"

End Sub

これで、プロシージャはマクロリストに表示されなくなりましたが、サブルーチンの呼び出し方法を変更する必要があります。パラメータが使用されない場合でも、パラメータが渡されるようにすべてのインスタンスを変更する必要があります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(9904)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excel-Hiding_Macros [HidingMacros]