Excel VBA скрывает настраиваемую вкладку ленты

У меня есть настраиваемая лента, которая работает нормально, но я хочу только включить ее и показать свое добавление для определенных книг, поэтому я проверяю заголовок книги при загрузке и пытаюсь использовать метод Invalidate, если условие ложно. К сожалению, ничего не происходит, вкладка настраиваемой ленты все еще отображается.

Вот мой саб:

Public Sub loadMyRibbon(ribbon As IRibbonUI)

    Set RibUI = ribbon

    If Not workbookTitle = "My Workbook" Then
        If Not RibUI Is Nothing
            RibUI.Invalidate
            MsgBox "Not Working"
        End If
    End If

End Sub 

Что мне кажется правильным после прочтения документации по методу: Документация Microsoft

Я вижу свое сообщение MsgBox, отображаемое на экране, поэтому я знаю, что до этого момента код выполняется правильно, но RibUI.Invalidate не скрывает мою вкладку. Ценю любые указатели!

Я также пробовал:

RibUI.InvalidateControl "myTag"

Но это тоже не работает


person baarkerlounger    schedule 02.08.2013    source источник


Ответы (1)


Ribbon.Invalidate не означает, что лента не будет отображаться. Функция Invalidate просто сообщает ленте аннулировать и повторно инициализировать элементы управления ленты с их свойствами по умолчанию / динамическими.

Я работал с несколькими надстройками, в которых клиенты хотели скрыть элементы ленты, если пользователи не могут пройти проверку подлинности. Итак, в таком случае я использовал атрибут «GetVisible» во всех своих элементах управления, а затем я использовал этот код

Sub GetVisible(control As IRibbonControl, ByRef Visible)
    On Error Resume Next

    Visible = shouldShowOrNot
End Sub

shouldShowOrNot - это логическая переменная, для которой я установил в Ribbon Load значение true, если пользователь проходит аутентификацию. См. Следующее изображение:

Лента с ошибкой аутентификации

Теперь это изображение представляет собой ленту на случай, если пользователь не прошел аутентификацию. Может быть, есть лучший способ сделать это, но пока я считаю, что это лучший способ.

Надеюсь, это поможет, Викас Б.

person Vikas    schedule 02.08.2013