「追加したはずの右クリックメニューが表示されない事件」の真相 ①
約2年前、このような記事を作成した。
infoment.hatenablog.com
右クリックメニューに追加したはずのコマンドが表示されない。
でもそれは、改ページプレビューで見たのが原因。そんな感じで
締めくくられている。
しかし実際はそうではないことを、先日職場で教えてもらった。
当時のメニュー追加マクロは、下記のとおり。
Sub AddNewMenu(new_caption As String, new_action As String) Dim NewMenu As CommandBarButton Set NewMenu = Application.CommandBars("Cell").Controls.Add() With NewMenu .Caption = new_caption .OnAction = new_action .BeginGroup = False End With End Sub
Sub AddMenuTest() Application.CommandBars("Cell").Reset Call AddNewMenu("追加メニュー", "追加メニュー") End Sub
今ならわかる。CommandBarsとはつまり、CommandBarがたくさん集まったもの。
従って、CommandBarsコレクションのうち、「Cell」に対してのみメニューを追加していた訳だ。そこで試しに、かなり乱暴ではあるがこんなコードを書いてみた。
Sub Test() Dim CommandBar As CommandBar On Error Resume Next For Each CommandBar In Application.CommandBars CommandBar.Reset With CommandBar.Controls.Add .Caption = CommandBar.Index & ":" & CommandBar.Name End With Next End Sub
すると、Cellが複数あることが分かる。
- 標準ビューの場合
- ページレイアウトビューの場合
- 改ページプレビューの場合
38番と41番の「Cell」は、どちらも同じ名前なので、名前で指定した結果、38番(=標準およびページレイアウトビュー)のみに右クリックメニューが追加されていたらしい。
何か、だんだんわかってきた。
次回に続きます。
参考まで。