Удалить панели команд> 1 вхождение - PullRequest
0 голосов
/ 24 октября 2019

У меня есть сторонняя надстройка. Моя проблема в том, что он считает последнюю загруженную панель команд и, если ее там нет, перезагружает ее.

Я не хочу редактировать их код, как в случае обновлений и т. Д., Его нужно будет менять каждый раз.

Есть ли способ удалить все панели команд, кроме одной, или изменить порядок загрузки, чтобы избежать этой проблемы?

Public Sub ABCInitializeAddin()

Dim menuEntries As Integer
Dim lastIndex As Integer

' Get number of menu entries
menuEntries = Application.CommandBars(WorksheetMenuBar).Controls.Count

' Get index of last entry
lastIndex = Application.CommandBars(WorksheetMenuBar).Controls(menuEntries).Index

If Not Application.CommandBars(WorksheetMenuBar).Controls(lastIndex - 1).Caption = ABCMenuEntry Then

    ' Add main menu entry
    Dim ABCMainMenu As CommandBarControl
    Set ABCMainMenu = CommandBars(WorksheetMenuBar).Controls.Add(Type:=msoControlPopup, Before:=lastIndex)
    ABCMainMenu.Caption = ABCMenuEntry

End Sub

1 Ответ

0 голосов
/ 24 октября 2019

Sub STDeleteXavex()

    Dim menuEntries As Integer
    Dim lastIndex As Integer
    Dim i As Long
    Dim p As Long
    Dim count As Long

    count = -1

    ' Get number of menu entries
    menuEntries = Application.CommandBars("Worksheet Menu Bar").Controls.count

    For i = 1 To menuEntries:
        If Application.CommandBars("Worksheet Menu Bar").Controls(i).Caption = "&ABC Online" Then count = count + 1
    Next i

    For p = 1 To count:
        Application.CommandBars("Worksheet Menu Bar").Controls("ABC Online").Delete
    Next p

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...