VBAでExcel2016ショートカットメニューをカスタマイズする方法

VBAでExcel2016ショートカットメニューをカスタマイズする方法

Excel 2007より前は、VBAプログラマーはCommandBarオブジェクトを使用して、カスタムメニュー、カスタムツールバー、およびカスタムショートカット(右クリック)メニューを作成していました。Excel 2007以降、CommandBarオブジェクトはかなり奇妙な位置にあります。メニューまたはツールバーをカスタマイズするコードを作成すると、Excelはそのコードをインターセプトし、コマンドの多くを無視します。

Excel 2007(以降のバージョンと同様)は、よく考えられたインターフェイスの機能強化を表示する代わりに、カスタマイズしたメニューとツールバーを[アドイン]という名前の包括的なリボンタブにダンプするだけです。

メニューとツールバーのカスタマイズは、[アドイン]→[メニューコマンド]または[アドイン]→[カスタムツールバー]グループで終了します。ただし、ショートカットメニューのカスタマイズ(CommandBarオブジェクトも使用)は、いつものように機能します。

結論は?CommandBarオブジェクトはもうあまり役に立ちませんが、ショートカットメニューをカスタマイズする唯一の方法です。

セルのショートカットメニューに新しいアイテムを追加する

以下に、セルを右クリックしたときに表示されるショートカットメニューに新しい項目を追加するサンプルコードを示します。これらの例をニーズに適合させることができるはずです。

セルのショートカットメニューから使用できるようにすることで、ケースの変更ユーティリティを少し拡張できます。

AddToShortcutプロシージャは、セルのショートカットメニューに新しいメニュー項目を追加します。NewControlという名前のオブジェクトのCaptionプロパティとOnActionプロパティを変更することで、独自のマクロを指すように調整できます。

サブAddToShortCut()
  CommandBarとしての薄暗いバー
  CommandBarButtonとしてのDimNewControl
  DeleteFromShortcut
  Set Bar = Application.CommandBars( "Cell")
  NewControl = Bar.Controls.Add_を設定します
     (タイプ:= msoControlButton、ID:= 1、_
     一時的:= True)
  NewControlを使用
    .Caption =“&Change Case”
    .OnAction =“ ChangeCase”
    .Style = msoButtonIconAndCaption
  で終わる
エンドサブ

ショートカットメニューを変更しても、Excelを再起動するまでその変更は有効です。つまり、変更されたショートカットメニューは、VBAコードを含むブックを閉じてもリセットされません。したがって、ショートカットメニューを変更するコードを作成する場合、ほとんどの場合、変更の効果を元に戻すコードを作成します。

DeleteFromShortcutプロシージャは、セルのショートカットメニューから新しいメニュー項目を削除します。

サブDeleteFromShortcut()
  エラー時に次を再開
  Application.CommandBars( "Cell")。Controls _
    (「&ChangeCase」)。削除
エンドサブ

これは、セルを右クリックした後に新しいメニュー項目がどのように表示されるかを示しています。

VBAでExcel2016ショートカットメニューをカスタマイズする方法

カスタムメニュー項目を表示するセルショートカットメニュー:大文字と小文字の変更。

いくつかの変数の宣言後の最初の実際のコマンドは、DeleteFromShortcutプロシージャを呼び出します。このステートメントにより、ショートカットの[セル]メニューに[大文字と小文字を区別する]メニュー項目が1つだけ表示されます。その行をコメントアウトして(行の先頭にアポストロフィを付けて)、手順を数回実行してみてください。ただし、夢中にならないでください。

セルを右クリックすると、[ケースの変更]メニュー項目の複数のインスタンスが表示されます。DeleteFromShortcutを複数回(追加のメニュー項目ごとに1回)実行して、すべてのエントリを削除します。

最後に、ブックを開いたときにショートカットメニュー項目を追加し、ブックを閉じたときにメニュー項目を削除する方法が必要です。これを行うのは簡単です。次の2つのイベントプロシージャをThisWorkbookコードモジュールに追加するだけです。

プライベートサブWorkbook_Open()
AddToShortCutを呼び出す
エンドサブ
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeleteFromShortcutを呼び出す
エンドサブ

Workbook_Openプロシージャは、ブックが開かれたときに実行され、Workbook_BeforeCloseプロシージャは、ブックが閉じられる前に実行されます。ちょうど医者が注文したもの。

Excel2013とExcel2016の違いは何ですか?

VBAを使用してExcel2007以前のショートカットメニューを操作したことがある場合は、大幅な変更に注意する必要があります。

以前は、コードがショートカットメニューを変更した場合、その変更はすべてのブックで有効でした。たとえば、セルの右クリックメニューに新しいアイテムを追加した場合、その新しいアイテムは、任意のブック(および後で開く他のブック)のセルを右クリックしたときに表示されます。つまり、ショートカットメニューの変更はアプリケーションレベルで行われました。

Excel2013とExcel2016は、単一のドキュメントインターフェイスを使用します。これは、ショートカットメニューに影響します。ショートカットメニューに加えた変更は、アクティブなブックウィンドウにのみ影響します。ショートカットメニューを変更するコードを実行しても、アクティブウィンドウ以外のウィンドウのショートカットメニューは変更されません。これは、物事が以前どのように機能していたかからの根本的な逸脱です。

別の工夫:アクティブなウィンドウに変更されたショートカットメニューが表示されているときにユーザーがワークブックを開く(または新しいワークブックを作成する)と、新しいワークブックにも変更されたショートカットメニューが表示されます。つまり、新しいウィンドウには、新しいウィンドウを開いたときにアクティブだったウィンドウと同じショートカットメニューが表示されます。

結論:以前は、ショートカットメニューを変更したワークブックまたはアドインを開いた場合、変更したショートカットメニューをすべてのワークブックで使用できることが保証されていました。あなたはもはやその保証を持っていません。

Access 2007 でカスタム ショートカット メニューを作成する

Access 2007 ではマクロ デザイン ウィンドウがそれ以降のバージョンと異なるため、Access 2007 を使用している場合は、次のセクションを展開して理解してください。

Access 2007 の手順 1: メニュー コマンドを含むマクロ グループを作成する

この手順では、マクロ グループを作成します。各マクロはショートカット メニュー上の個別のコマンドになります。

マクログループとは何ですか?

マクロ グループは、2 つ以上の独立したマクロを含む単一のマクロ オブジェクトです。個々のマクロは、「マクロ名」列に各マクロの名前を入力することで識別されます。次の図では、  Macro3 が マクロ グループです。 NotFoundMsg と FoundMsg は グループ内の個別のマクロであり、各マクロは 2 つのマクロ アクションで構成されます。

マクログループの例

注:  [マクロ名]列  はデフォルトでは非表示になっています。[マクロ名] 列 を表示するには 、 [デザイン]タブの[表示/非表示]グループ で  、  [マクロ名]をクリックします。

  1. [作成] タブ の [その他]グループで、 [マクロ] をクリックします 。このコマンドが使用できない場合は、[モジュール] ボタン または [クラス モジュール]ボタンの下にある矢印をクリックし  、[ マクロ]をクリックします。

  2. [デザイン] タブの [表示/非表示] グループで 、  [ マクロ 名]をクリックして[マクロ名]列 を表示します  。

  3. カスタム ショートカット メニューに必要な各コマンドについて:

    • [マクロ名]列に  、ショートカット メニューに表示するテキスト (「レポートの印刷」や「保存」など) を入力します。

      注: キーボードを使用してコマンドを選択できるようにアクセス キーを作成するには、コマンド名の中でアクセス キーにしたい文字の前にアンパサンド (&) を入力します (たとえば、「&Save」)。この文字はメニュー上で下線が引かれます。
    • [アクション]列で  、ショートカット メニューのコマンドをクリックしたときに実行する最初のアクションを選択します。

    • このコマンドを選択したときにさらに実行したいアクションがある場合は、後続の行に追加します。後続の各アクションでは、  「マクロ名」 セルを空白のままにしておきます。

      注:  2 つのメニュー コマンドの間に線を作成するには、適切なメニュー コマンドの間の[マクロ名]列にハイフン (-) を入力します  。
  4. マクロに名前を付けて保存します (例:   mcrShortcutMenuCommands )。

次の図は、カスタム メニューまたはショートカット メニューのマクロ グループの例を示しています。

デザイン ビューのメニュー マクロ グループ

Access 2007 の手順 2: メニューを作成するマクロを作成する

この手順は冗長に見えるかもしれませんが、手順 1 で作成したマクロ グループからショートカット メニューを作成するには、AddMenu マクロ アクションを含む 2 番目のマクロを作成する必要があります。このマクロは「メニュー マクロ」と呼ばれることもあります。

  1. [作成] タブ の [その他]グループで、 [マクロ] をクリックします 。このコマンドが使用できない場合は、[モジュール] ボタン または [クラス モジュール]ボタンの下にある矢印をクリックし  、[ マクロ]をクリックします。

  2. マクロの最初の行で、  「アクション」リスト の 「AddMenu」を選択します 。

  3. [アクションの引数]の [メニュー名]ボックスに  、メニューの名前 (「レポート コマンド」など) を入力します。この引数は必須ではありませんが、手順 3 でメニューをリボン タブ (  フォームまたはレポートの[アドイン]タブなど) に追加する場合は、この引数を指定することをお勧めします。ステップ 3 でメニューがショートカット メニューとして追加された場合、 メニュー名 引数は無視されます。

  4. [メニュー マクロ名]ボックスに  、手順 1 で作成したマクロの名前を入力します。

  5. マクロを保存し、  mcrAddShortcutMenuなどの名前を付けます。

次の図は、手順 1 で設計したメニューを作成するメニュー マクロの例を示しています。

デザイン ビューのメニュー マクロ

Access 2007 の手順 3: コントロール、フォーム、レポート、またはデータベースにメニューを添付する

メニューを表示する場所に応じて、次の 1 つ以上の手順を使用します。

  • フォームまたはレポートの「アドイン」タブにメニューを追加します。

     次の図に示すように、特定のフォームまたはレポートの[アドイン]タブにメニューを表示するには、この手順を使用します 。

    カスタム メニューを含む [アドイン] タブ

    1. ナビゲーション ウィンドウで、メニューを表示するフォームまたはレポートを右クリックし、  [デザイン ビュー]をクリックします。

    2. [デザイン] タブ の [表示/非表示] グループで、  [プロパティ シート]をクリックします。

    3.  [プロパティ シート] 作業ウィンドウの上部にあるリストから[フォーム] または [レポート]を選択して、オブジェクト全体を選択します 。

    4.  プロパティ シートの [その他]タブの [ショートカット メニュー] プロパティ ボックスに、手順 2 で作成したマクロの名前 (この例では「mcrAddShortcutMenu」) を入力します。

      次回フォームまたはレポートを開くと、  リボンに[アドイン]タブが表示されます。タブをクリックするとメニューが表示されます。

      カスタム タブの追加や既定のタブの非表示など、リボンのカスタマイズ手法の詳細については、「  Access でカスタム リボンを作成する」の記事を参照してください。

      リボンは、Microsoft Office Fluent ユーザー インターフェイスのコンポーネントです。

  • メニューをフォーム、レポート、またはコントロールのショートカット メニューとして追加します。

    次の図に示すように、特定のフォーム、レポート、またはコントロールを右クリックしたときにメニューを表示するには、この手順を使用します。

    シンプルなショートカットメニュー

    1. ナビゲーション ウィンドウで、ショートカット メニューを表示するフォームまたはレポートを右クリックし、  [デザイン ビュー]をクリックします。

    2. [デザイン] タブ の [表示/非表示] グループで、  [プロパティ シート]をクリックします。

    3. ショートカット メニューをアタッチするコントロールまたはオブジェクトを選択します。

      注: オブジェクト全体を選択するには、   [プロパティ シート] 作業ウィンドウの上部にあるリストから [フォーム] または [レポート]を選択します。

    4.  プロパティ シートの [その他]タブの [ショートカット メニュー バー] プロパティ ボックスに、手順 2 で作成したマクロの名前 (この例では「mcrAddShortcutMenu」) を入力します。

  • メニューをグローバル ショートカット メニューとして追加する

    この手順により、現在のデータベース内のデフォルトのショートカット メニューがすべて置き換えられます。特定のフォーム、レポート、またはコントロールにアタッチしたカスタム ショートカット メニューは影響を受けません。

    1. [Microsoft Office ボタン]をクリックし  、  [アクセス オプション]をクリックします。

    2. [アクセス オプション]ダイアログ ボックスで  、  [現在のデータベース]をクリックします。

    3. [リボンとツールバーのオプション]の [ショートカット メニュー バー]ボックスに  、手順 2 で作成したマクロの名前 (この例では「mcrAddShortcutMenu」) を入力します。

  • カスタム ショートカット メニューは、それらがアタッチされているオブジェクトのデフォルトのショートカット メニューを置き換えます。これらのメニューで使用する特定の Access コマンドを保持したい場合は、  RunCommand アクションを使用して、コマンドを入れたいメニューのマクロ グループに入れます。

  • コントロールにアタッチされたカスタム ショートカット メニューは、データベースで定義されている他のカスタム ショートカット メニューよりも優先されます。フォームまたはレポートに添付されたカスタム ショートカット メニューは、カスタム グローバル ショートカット メニューよりも優先されます。

  • フォーム、レポート、またはデータベースのメニュー マクロを指定すると、フォーム、レポート、またはデータベースが開かれるたびに、Access によってこのメニュー マクロが実行されます。フォーム、レポート、またはデータベースが開いているときにメニュー マクロ、またはそのコマンドを定義するマクロ グループに変更を加えた場合、変更を確認するには、フォーム、レポート、またはデータベースを閉じて再度開く必要があります。

  • サブメニューを作成するには、ステップ 1 に従って、サブメニュー コマンドのみを含む別のマクロ グループを作成します。次に、ステップ 1 を再度実行して、上位レベルのメニューのコマンドを定義します。AddMenuマクロ アクションを使用して、サブメニューを上位レベルのマクロ グループの項目として追加します  。次の図は、サブメニューを含むメニューのマクロ グループと、その結果のショートカット メニューを示しています。マクロ グループの 3 行目は、  [エクスポート先...] サブメニュー ( mcrSubMenu ) を作成します。

    サブメニューを含むショートカット メニュー

     メニューの各レベルのマクロ グループでAddMenuアクションを使用して、複数のレベルのサブメニューを作成できます 。 各 AddMenuアクションのMenu Name引数に必ず値を指定してください  。そうしないと、サブメニューが上位レベルのメニューに空白行として表示されます。

  • マクロ条件は、トップレベル メニュー マクロでのみサポートされます。つまり、メニュー マクロで条件を使用して、特定のメニューまたはショートカット メニューを表示するかどうかを決定できますが、それは最上位のメニューのみに限られます。条件を使用して、メニュー上のコマンドまたはサブメニューを表示または非表示にすることはできません。条件を使用して、カスタム ショートカット メニューまたはグローバル ショートカット メニューを表示または非表示にすることもできます。

  • オプションで、手順 2 で作成したメニュー マクロをマクロ グループの一部にすることができます。たとえば、さまざまなオブジェクトまたはコントロールに複数のショートカット メニューがある場合、必要なメニュー マクロをすべて含む単一のマクロ オブジェクトを作成できます。必ず 「マクロ名」 列を表示し、各マクロに一意の名前を入力してください。ステップ 3 では、次の表記を使用してマクロを参照します: マクログループ名.マクロ名。たとえば、  mcrAddShortcutMenus.AddMenu2です。


スマートシート 9.1.1

スマートシート 9.1.1

Smartsheet は、プロジェクトの管理、ワークフローの構築、チームとの共同作業を可能にする動的な作業プラットフォームです。

共有ポイント

共有ポイント

SharePoint は、さまざまなワークフロー アプリケーション、「リスト」データベース、その他の Web コンポーネント、およびビジネス グループの共同作業を制御するためのセキュリティ機能を使用する Web ベースのコラボレーション システムです。

パーペチュアルカレンダー 1.0.38/1.0.36

パーペチュアルカレンダー 1.0.38/1.0.36

Van Nien Calendar は、携帯電話でカレンダーを表示するアプリケーションです。携帯電話で太陰太陽の日付をすぐに確認できるため、重要な仕事を計画することができます。

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook は、Microsoft Corporation によって開発されたビジネスおよび生産性アプリケーションです。

クリックアップ

クリックアップ

ClickUp は、あらゆるビジネスにとって最も評価の高い生産性プラットフォームの 1 つです。Google、Booking.com、サンディエゴ・パドレス、Uber などの大企業はすべて、職場の生産性を向上させるために ClickUp を使用しています。

PDF-XChange ビューア 2.5.322.10

PDF-XChange ビューア 2.5.322.10

PDF は、テキスト ドキュメントの読み取り、作成、送信に一般的に使用される形式になっています。その結果、この種のドキュメントに使用されるプログラムの数も増加しました。PDF-XChange Viewer は、ますます多くの PDF ビューアの 1 つです。

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice は、特に Excel、PowerPoint、Word など、Microsoft 365 に匹敵する Office アプリケーションの完全なスイートを提供します。プロジェクトをより効率的に管理できるようになり、いくつかのファイル形式がサポートされます。

iTaxviewer 1.8.7をダウンロード

iTaxviewer 1.8.7をダウンロード

iTaxViewer ソフトウェアは、現在最も人気のある XML ファイル読み取りソフトウェアです。このソフトウェアは、国税総局のXML形式の電子申告書を閲覧するためのアプリケーションです。

Nitro PDF リーダー

Nitro PDF リーダー

Nitro PDF Reader は、ほとんどの人が PDF ドキュメントを使用して毎日実行する基本的なタスクをすべてカバーする便利な PDF エディターです。

Foxit リーダー 12

Foxit リーダー 12

Foxit Reader は主に PDF リーダーですが、PDF ファイルの作成、署名、編集、注釈の追加も可能です。オペレーティング システム上で動作し、Microsoft Office パッケージのさまざまなプログラム用のプラグインがあります。