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

先日来、2年越しの事件が解決しそうだ。
infoment.hatenablog.com

今日は、先日の続きから。
f:id:Infoment:20200729215012p:plain

個人的に、追加した右クリックメニューを実行したくなるのは、以下のパターンのとき。

  1. テーブル上のセル又は範囲
  2. ピボットテーブル上のセル又は範囲
  3. 上記以外のセル又は範囲

そこで、先日無理矢理追加した右クリックメニューから、各ビューの上記それぞれについて何が登録されているかを確認してみた。

結果は、下表のとおり。
f:id:Infoment:20200729220644p:plain

PivotTableは全ビュー共通なのに、RangeとTable(=ListObject)は、改ページプレビューだけ違う。何だか、一貫性が無いように見えて気持ち悪いが(仕様だから)仕方ない。

ところで2年前は、CommandBars("Cell") のように名前で指定した。
今回は、38や61などの番号で登録できないか試してみよう。

Sub Test()
    With Application.CommandBars.Item(38).Controls.Add
        .Caption = "テスト"
    End With
End Sub

↓ できた。
f:id:Infoment:20200729221342p:plain

それでは、これをループさせてみよう。

Sub Test()
    Dim LoopIndex As Variant
        For Each LoopIndex In Array(38, 41, 61, 74, 75)
            With Application.CommandBars(LoopIndex).Controls.Add
                .Caption = "テスト"
            End With
        Next
End Sub

結果、ビューに関係なくテーブルでもピボットテーブルでも、右クリックメニューを表示させることが出来た。

次回に続きます。

参考まで。