Access マクロを使用すると、フォーム、レポート、または個々のコントロールを右クリックしたときに表示されるカスタム ショートカット メニューを作成できます。 また、特定のフォームまたはレポートのリボンに表示されるカスタム メニューを作成することもできます。
マクロを使用してメニューを作成するには、次の 3 つのメイン手順を実行します。
-
メニュー コマンドを含むサブマクロを持つマクロ オブジェクトをCreateします。
-
メニュー自体を作成する別のマクロ オブジェクトをCreateします。
-
コントロール、フォーム、レポート、またはデータベース全体にメニューをアタッチします。
次のセクションでは、これらの手順について詳しく説明します。
ヒント: Visual Basic for Applications (VBA) コードを使用して Access でカスタム ショートカット メニューを作成する方法については、フォーム、フォーム コントロール、またはレポートのショートカット メニュー Create記事を参照してください。
手順 1: メニュー コマンドを含むサブマクロを含むマクロ オブジェクトをCreateする
この手順では、サブマクロを使用してマクロ オブジェクトを作成します。それぞれのサブマクロは、ショートカット メニューの個別のコマンドになります。
サブマクロとは
マクロ オブジェクト内のサブマクロを使用して、マクロ アクションのセットを定義できます。 マクロ オブジェクト内のサブマクロは、さまざまなコントロール イベントやオブジェクト イベントとは別に呼び出すことができます。 マクロ オブジェクト内の個々のサブマクロはそれぞれ一意の名前を持ち、1 つ以上のマクロ アクションを含めることができます。
-
作成タブのマクロとコードグループで、マクロをクリックします。
-
カスタム ショートカット メニューで必要なコマンドごとに、次の操作を行います。
-
サブマクロ マクロ ステートメントをマクロ デザイン ウィンドウに追加し、ショートカット メニューに表示するサブマクロに名前を付けます ("印刷" や "更新" など)。
ヒント: キーボードを使用してコマンドを選択できるようにアクセス キーを作成するには、コマンド名にアクセス キーにする文字の前にアンパサンド (&) を入力します ("&更新" など)。 この文字はメニューに下線が引きます。
-
サブマクロ内で、ショートカット メニューのコマンドをクリックしたときに実行する最初のアクションを選択します。
-
このコマンドを選択するときに実行するアクションがさらに存在する場合は、同じサブマクロ内で個別のマクロ アクションとして追加します。
-
-
マクロ オブジェクトに mcrShortcutMenuCommands などの名前を付けて保存します。
次の図は、カスタム メニューまたはショートカット メニュー用の 3 つのサブマクロを持つマクロ オブジェクトの例を示しています。
手順 2: メニューを作成する 2 つ目のマクロ オブジェクトをCreateする
この手順は冗長に見えるかもしれませんが、手順 1 で作成したマクロ オブジェクトからショートカット メニューを作成するには、 AddMenu マクロ アクションを含む 2 つ目のマクロ オブジェクトを作成する必要があります。 このマクロ アクションは、"メニュー マクロ" と呼ばれることもあります。
-
作成タブのマクロとコードグループで、マクロをクリックします。
-
マクロ デザイン ウィンドウの [ 新しいアクションの追加 ] コンボ ボックスで、[ AddMenu] を選択します。
-
AddMenu マクロ アクションの [メニュー名] 引数ボックスに、メニューの名前 ("フォーム コマンド" など) を入力します。 この引数は必須ではありませんが、手順 3 でメニューをリボン タブ (フォームやレポートの [アドイン] タブなど) に 追加する予定がある場合に推奨されます。 手順 3 でメニューをショートカット メニューとして追加した場合、 Menu Name 引数は無視されます。
-
[ メニュー マクロ名 ] 引数ボックスに、手順 1 で作成したマクロ オブジェクトの名前を入力します。
-
この 2 番目のマクロ オブジェクト ( mcrAddShortcutMenu など) を保存して名前を付けます。
次の図は、手順 1 で設計したメニューを作成するメニュー マクロ オブジェクトの例を示しています。
手順 3: メニューをコントロール、フォーム、レポート、またはデータベースにアタッチする
メニューを表示する場所に応じて、次の手順の 1 つ以上を使用します。
フォームまたはレポートの [Add-Ins] タブにメニューを追加する
特定のフォームまたはレポートの [アドイン] タブにメニュー を 表示する場合は、次の手順に従います。
-
ナビゲーション ウィンドウで、メニューを表示するフォームまたはレポートを右クリックし、[ デザイン ビュー] をクリックします。
-
[デザイン] タブの [ツール] で [プロパティ シート] をクリックします。
-
[プロパティ シート] 作業ウィンドウの上部にある一覧から [フォーム ] または [ レポート ] を選択して、オブジェクト全体を選択します。
-
プロパティ シートの [ その他 ] タブの [メニュー バー ] プロパティ ボックスに、手順 2 で作成したマクロ オブジェクトの名前を入力します (この例では"mcrAddShortcutMenu")。
-
フォームまたはレポートの変更を保存します。
次にフォームまたはレポートを開くと、リボンに [ アドイン ] タブが表示されます。 次の図に示すように、タブをクリックしてメニューを表示します。
カスタム タブの追加や既定のタブの非表示など、リボンのカスタマイズ手法の詳細については、Access のカスタム リボンCreate記事を参照してください。
フォーム、レポート、またはコントロールのショートカット メニューとしてメニューを追加する
特定のフォーム、レポート、またはコントロールを右クリックしたときにメニューを表示する場合は、この手順を使用します。
-
ナビゲーション ウィンドウで、ショートカット メニューを表示するフォームまたはレポートを右クリックし、[ デザイン ビュー] をクリックします。
-
[デザイン] タブの [ツール] で [プロパティ シート] をクリックします。
-
ショートカット メニューをアタッチするコントロールまたはオブジェクトを選択します。
オブジェクト全体を選択するには、[プロパティ シート] 作業ウィンドウの上部にある一覧から [フォーム ] または [ レポート ] を選択します。
-
プロパティ シートの [ その他 ] タブの [ ショートカット メニュー バー ] プロパティ ボックスに、手順 2 で作成したマクロ オブジェクトの名前を入力します (この例では"mcrAddShortcutMenu")。
-
[ショートカット メニュー] プロパティが [はい] に設定されていることを確認します。
-
フォームまたはレポートの変更を保存します。
次にフォームまたはレポートを開き、フォーム、レポート、またはコントロールを右クリックすると、次の図に示すように、関連付けられているコマンドを含むショートカット メニューが表示されます。
グローバル ショートカット メニューとしてメニューを追加する
この手順では、現在のデータベース内のすべての既定のショートカット メニューを置き換えます。 特定のフォーム、レポート、またはコントロールにアタッチしたカスタム ショートカット メニューは影響を受けません。
-
[ファイル] メニューの [オプション] をクリックします。
-
[Access のオプション] ダイアログ ボックスで [カレント データベース] をクリックします。
-
[ リボンとツール バーのオプション] の [ ショートカット メニュー バー ] ボックスに、手順 2 で作成したマクロの名前を入力します (この例では"mcrAddShortcutMenu")。
-
[ OK] を クリックして、[ アクセス オプション] ダイアログ ボックスに変更を保存します。
-
変更を有効にするには、データベースを閉じてから再度開きます。
カスタム ショートカット メニューは、アタッチされているオブジェクトの既定のショートカット メニューを置き換えます。 これらのメニューで使用する特定の Access コマンドを保持する場合は、 RunCommand マクロ アクションを使用して、必要なメニューのマクロ オブジェクトにコマンドを配置します。
コントロールにアタッチされているカスタム ショートカット メニューは、データベースで定義されている他のカスタム ショートカット メニューよりも優先されます。 フォームまたはレポートにアタッチされているカスタム ショートカット メニューは、カスタム グローバル ショートカット メニューよりも優先されます。
フォームまたはレポートまたはデータベースのメニュー マクロを指定すると、フォーム、レポート、またはデータベースが開かれるたびに、このメニュー マクロが実行されます。 フォーム、レポート、またはデータベースを開いている間にメニュー マクロ オブジェクトまたはそのコマンドを定義するマクロ オブジェクトに変更を加えた場合は、フォーム、レポート、またはデータベースを閉じて、もう一度開いて変更を確認する必要があります。
コマンドのショートカット メニュー リストにサブメニューを作成するには、手順 1 に従って、次の図に示すように、サブメニュー コマンドのみを含む個別のマクロ オブジェクトを作成します。
次に、もう一度手順 1 に従って、上位レベルのメニュー オブジェクトのコマンドを定義します。 AddMenu マクロ アクションを使用して、サブメニューを上位レベルのマクロ オブジェクトの項目として追加します。 次の図は、サブメニューを含むメニューのマクロ オブジェクトを示しています。 このマクロ オブジェクトの例の 3 番目のサブマクロは、 Export to... サブメニュー (mcrShortcutSubMenuCommands) を作成します。
次の図は、サブメニューを含む完成したショートカット メニューを示しています。
メニューの各レベルのマクロ オブジェクトで AddMenu マクロ アクションを使用して、複数のレベルのサブメニューを作成できます。 AddMenu アクションごとに Menu Name 引数の値を指定してください。それ以外の場合、サブメニューは上位レベルのメニューに空白行として表示されます。
If/Then/Else ブロックを使用したマクロ式の条件は、最上位のメニュー マクロ オブジェクトでのみサポートされています。 つまり、メニュー マクロ オブジェクトの条件式を使用して、特定のメニューまたはショートカット メニューが表示されるかどうかを判断できますが、最上位のメニューに対してのみ表示されます。 条件式を使用して、メニューのコマンドまたはサブメニューを表示または非表示にすることはできません。 条件式を使用して、カスタム ショートカット メニューまたはグローバル ショートカット メニューを非表示または表示することもできます。
必要に応じて、手順 2 で作成したメニュー マクロをマクロ オブジェクトの一部にすることができます。 たとえば、さまざまなオブジェクトまたはコントロールに対して複数のショートカット メニューがある場合は、必要なすべてのメニュー マクロを含む 1 つのマクロ オブジェクトを作成できます。 サブマクロごとに一意の名前を指定してください。 手順 3 では、 マクロ MacroObjectName.SubmacroName を参照するには、次の表記を使用します。 たとえば、 mcrAddShortcutMenus.AddMenu2 です。