「追加したはずの右クリックメニューが表示されない事件」の真相 ①

約2年前、このような記事を作成した。
infoment.hatenablog.com

右クリックメニューに追加したはずのコマンドが表示されない。
でもそれは、改ページプレビューで見たのが原因。そんな感じで
締めくくられている。

しかし実際はそうではないことを、先日職場で教えてもらった。
f:id:Infoment:20200727221003p:plain

当時のメニュー追加マクロは、下記のとおり。

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が複数あることが分かる。

  • 標準ビューの場合

f:id:Infoment:20200727222709p:plain

  • ページレイアウトビューの場合

f:id:Infoment:20200727222803p:plain

  • 改ページプレビューの場合

f:id:Infoment:20200727222916p:plain

38番と41番の「Cell」は、どちらも同じ名前なので、名前で指定した結果、38番(=標準およびページレイアウトビュー)のみに右クリックメニューが追加されていたらしい。

何か、だんだんわかってきた。

次回に続きます。

参考まで。