为什么可以';我是否可以使用VBA在Excel 2013中编辑commandbar控件?

为什么可以';我是否可以使用VBA在Excel 2013中编辑commandbar控件?,excel,vba,commandbar,Excel,Vba,Commandbar,我正在尝试使用VBA为数据透视表进行自己的钻取操作。 该操作将从数据透视表的上下文菜单中从附加操作调用。 我想将我的按钮放在数据透视表上下文菜单的附加操作控制下命令栏。 关键是,默认情况下,附加操作已包含(未定义操作)项。 因此,我想在添加按钮后删除此(未定义任何操作),但没有任何效果。 我甚至无法更改(未定义任何操作)控件的任何属性,如标题、可见等。 原因可能是什么,解决办法是什么? 以下是我迄今为止的代码(例如,您可以在右键单击之前将其放在工作簿工作表下,然后使用该工作簿中的任何透视表进行测

我正在尝试使用VBA为数据透视表进行自己的钻取操作。 该操作将从数据透视表的上下文菜单中从附加操作调用。 我想将我的按钮放在数据透视表上下文菜单的附加操作控制下命令栏。 关键是,默认情况下,附加操作已包含(未定义操作)项。 因此,我想在添加按钮后删除此(未定义任何操作),但没有任何效果。 我甚至无法更改(未定义任何操作)控件的任何属性,如标题、可见等。 原因可能是什么,解决办法是什么? 以下是我迄今为止的代码(例如,您可以在右键单击之前将其放在工作簿工作表下,然后使用该工作簿中的任何透视表进行测试):

因此,最后一节使用b控制的。。。End With完全不起作用,并抛出一个错误“Automation error”。 我可以成功地编辑其他操作本身,如启用它,但我想摆脱(未定义操作)控件,或者用我自己的控件替换它。 请注意,调用.Controls((未定义任何操作)”).Delete也不起作用。 我该怎么做?
我试图用谷歌搜索这个问题,但没有成功…

我怀疑你无法添加到该菜单中。但是,您可以将以下内容添加到关联菜单本身:

Sub test()
Dim PCell As PivotCell
Dim PComBar As CommandBar
Dim DControl As CommandBarControl
Dim target As Excel.Range

    Set target = ActiveCell
    On Error Resume Next
    Set PCell = ActiveCell.PivotCell
    On Error GoTo 0
    If Not PCell Is Nothing Then
        Set PComBar = Application.CommandBars("PivotTable Context Menu")
        Set DControl = PComBar.Controls.Add(Type:=msoControlButton, Temporary:=True, Before:=1)
        With DControl
            .Style = msoButtonIconAndCaption
            .Caption = "My Drillthrough Action"
            .FaceId = 786
        End With
    End If
    End Sub

事实上,我可以将我的按钮添加到“附加操作”中,效果很好。我无法从那里删除已经存在的默认项(未定义任何操作)。对不起,我现在明白了,这就是您所说的。
Sub test()
Dim PCell As PivotCell
Dim PComBar As CommandBar
Dim DControl As CommandBarControl
Dim target As Excel.Range

    Set target = ActiveCell
    On Error Resume Next
    Set PCell = ActiveCell.PivotCell
    On Error GoTo 0
    If Not PCell Is Nothing Then
        Set PComBar = Application.CommandBars("PivotTable Context Menu")
        Set DControl = PComBar.Controls.Add(Type:=msoControlButton, Temporary:=True, Before:=1)
        With DControl
            .Style = msoButtonIconAndCaption
            .Caption = "My Drillthrough Action"
            .FaceId = 786
        End With
    End If
    End Sub