2014-01-15 64 views
2

我正試圖通過VBA爲我的數據透視表創建自己的鑽取操作。 該操作將從數據透視表的上下文菜單中調用,其中附加操作。 我想把我的按鈕放在附加動作控制數據透視表上下文菜單命令欄。 重點在於默認附加動作已包含(無操作定義)項目。 所以,我想刪除這個(沒有操作定義)添加我的按鈕後,但沒有任何工作。 我甚至不能更改(未定義任何操作)控件的任何屬性,如標題,可見等。 可能是什麼原因,以及解決方法是什麼? 這裏是我到目前爲止的代碼(你可以把它Workbook_SheetBeforeRightClick下,例如,然後用任何數據透視表在工作簿測試):爲什麼我無法使用VBA在Excel 2013中編輯命令欄控件?

Dim PCell     As PivotCell 
Dim PComBar     As CommandBar 
Dim PControl    As CommandBarControl 
Dim DControl    As CommandBarControl 
Dim BControl    As CommandBarControl 
Dim IsFromPivotTable  As Boolean 

IsFromPivotTable = False 
On Error GoTo NotFromPivot 
Set PCell = Target.PivotCell 
IsFromPivotTable = True 
NotFromPivot: 
On Error GoTo 0 
If IsFromPivotTable Then 
    Set PComBar = Application.CommandBars("PivotTable Context Menu") 
    Set PControl = PComBar.Controls("Additional Actions") 
    On Error Resume Next 
    With PControl 
     Call .Controls("My Drillthrough Action").Delete 
     .Enabled = True 
    End With 
    On Error GoTo 0 
    Set DControl = PControl.Controls.Add(Type:=msoControlButton, Temporary:=True, Before:=1) 
    With DControl 
     .Style = msoButtonIconAndCaption 
     .Caption = "My Drillthrough Action" 
     .FaceId = 786 
    End With 
    On Error Resume Next 
     Set BControl = PControl.Controls("(No Actions Defined)") 
     With BControl 'This does not work and throws error if do not suppress with On Error 
      .Enabled = True 
      .Visible = False 
      .Caption = "Hello there" 
     End With 
    On Error GoTo 0 
End If 

所以,最後一節隨着B控制...結束與根本不起作用,並引發錯誤「自動化錯誤」。 我可以成功編輯其他操作本身,就像啓用它,但我想擺脫(無操作定義)控制,或用我自己的替換它。 請注意,調用.Controls(「(無操作定義)」)刪除也不起作用。 我該怎麼做? 我試圖谷歌的問題,但沒有運氣...

回答

0

我懷疑你不能添加到該菜單。但是,您可以添加到上下文菜單本身:

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 
+0

實際上,我可以將我的按鈕添加到「其他操作」,它工作正常。我無法從那裏刪除已有的默認項目「(沒有操作定義)」。 – Oleksandr

+0

對不起,我現在看到這就是你說的。 –

相關問題