2014-01-15 1 views
2

Я пытаюсь сделать свое собственное сквозное действие для сводной таблицы с помощью VBA. Действие будет вызываться из контекстного меню сводной таблицы с Дополнительные действия. Я хочу поставить свою кнопку под Дополнительные действия управление Контекстное меню сводной таблицы панель команд. Дело в том, что по умолчанию Дополнительные действия уже содержит (никаких действий не определено) шт. Итак, я хочу удалить это (никаких действий не определено) после добавления моей кнопки, но ничего не работает. Я не могу даже изменить какое-либо свойство (никаких действий не определено) управление, например, надпись, видимая и т. Д. В чем может быть причина, и каково обходное решение? Вот мой код до сих пор (вы можете поместить его под Workbook_SheetBeforeRightClick, к примеру, а затем проверить с какой-либо сводной таблицы в этой книге):Почему я не могу редактировать элемент управления из командной строки в Excel 2013 с помощью VBA?

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 

Итак, последний раздел С BControl ... End With не работает вообще, и выдает сообщение об ошибке «Ошибка автоматизации». Я могу успешно отредактировать Дополнительные действия сам, как включить его, но я хотел бы избавиться от (никаких действий не определено) контролировать или заменить его своим. Обратите внимание, что Вызов. Контроль ("(никаких действий не определено)"). Удалить тоже не работает. Как я могу это сделать? Я попытался решить проблему, но не повезло ...

ответ

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

На самом деле, я могу добавить свою кнопку в «Дополнительные действия», и она отлично работает. Я не могу удалить уже существующий элемент по умолчанию "(No Actions Defined)" оттуда. – Oleksandr

+0

Прости, я вижу, вот что ты сказал. –

Смежные вопросы