カスタマイズしたメニューに、アクセスキーを表示する方法をご紹介しておきます。
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
上記のコードを、VBE(Visual Basic Editor)を起動して標準モジュールに貼り付け実行すると、下図のようにアクセスキーつきでメニュー項目が表示されます。
アクセスキーを表示するためのプロパティがあるように思ってしまう方もいらっしゃるようですが、そうではなく、
「objCBCtrl.Caption = "テスト_メニューの追加(&M)"」
「.Caption = "テスト_コマンドA(&A)"」
のように、Captionプロパティで、メニューに表示される文字列の後に「&」で英数字を指定するだけです。
▼サンプルファイル(002979.xls 39KByte)ダウンロード
サンプルファイルの標準モジュールには上記のコードの他、[テスト_コマンドA][テスト_コマンドB]から呼ばれるダミーのマクロ、カスタマイズしたメニューバーを元に戻すResetMenuBarマクロが記述してあります。
また、ブックがアクティブなときだけメニューがカスタマイズされるように、Workbook_ActivateイベントプロシージャからCustomizeMenuBarマクロを、Workbook_DeactivateイベントプロシージャからResetMenuBarマクロを、それぞれ呼んでいます。
- Newer:Wordで実践 やさしくて役に立つ「マクロ」事例集
- Older:スライド番号を途中から振りたい−目的別スライドショー
Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » カスタマイズしたメニューにアクセスキーを表示する