Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » カスタマイズしたメニューにアクセスキーを表示する

カスタマイズしたメニューにアクセスキーを表示する

[スポンサードリンク]

カスタマイズしたメニューに、アクセスキーを表示する方法をご紹介しておきます。

▼メニューをカスタマイズするマクロ
Sub CustomizeMenuBar()

 Dim objCB As CommandBar
 Dim objCBCtrl As CommandBarControl
 
 Set objCB = Application.CommandBars("Worksheet Menu Bar")
 
 On Error Resume Next
 objCB.Controls("テスト_メニューの追加(&M)").Delete
 On Error GoTo 0
 
 Set objCBCtrl = objCB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
 objCBCtrl.Caption = "テスト_メニューの追加(&M)"
 
 With objCBCtrl
  
  .Controls.Add Type:=msoControlButton
  With .Controls(1)
   .Caption = "テスト_コマンドA(&A)"
   .OnAction = "TestCmdA"
  End With
  
  .Controls.Add Type:=msoControlButton
  With .Controls(2)
   .Caption = "テスト_コマンドB(&B)"
   .OnAction = "TestCmdB"
  End With
 
 
 End With

End Sub

上記のコードを、VBE(Visual Basic Editor)を起動して標準モジュールに貼り付け実行すると、下図のようにアクセスキーつきでメニュー項目が表示されます。

カスタマイズしたメニューにアクセスキーを表示する

アクセスキーを表示するためのプロパティがあるように思ってしまう方もいらっしゃるようですが、そうではなく、
「objCBCtrl.Caption = "テスト_メニューの追加(&M)"」
「.Caption = "テスト_コマンドA(&A)"」
のように、Captionプロパティで、メニューに表示される文字列の後に「&」で英数字を指定するだけです。

▼サンプルファイル(002979.xls 39KByte)ダウンロード

サンプルファイルの標準モジュールには上記のコードの他、[テスト_コマンドA][テスト_コマンドB]から呼ばれるダミーのマクロ、カスタマイズしたメニューバーを元に戻すResetMenuBarマクロが記述してあります。

また、ブックがアクティブなときだけメニューがカスタマイズされるように、Workbook_ActivateイベントプロシージャからCustomizeMenuBarマクロを、Workbook_DeactivateイベントプロシージャからResetMenuBarマクロを、それぞれ呼んでいます。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » カスタマイズしたメニューにアクセスキーを表示する

「イベントプロシージャ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.
.