Excel 2010 - как очистить элемент управления RibbonX dropDown?

Я изо всех сил пытаюсь очистить выделение dropDown с помощью кода VBA в Excel 2010. Причина, по которой я хочу это сделать, заключается в том, что событие onAction не срабатывает, если последовательно щелкнуть один и тот же элемент, не переключившись сначала на другой элемент.

Я немного покопался и прочитал, что метод InvalidateControl очищает кэшированное значение элемента управления. Итак, я реализовал это, и...

Sub getUIHandle(ribbon As Office.IRibbonUI)
    Set MyRibbon = ribbon
End Sub
----
Sub LabelCallback(control As IRibbonControl, id As String, index As Integer)

    Select Case id
        Case "CH1"
            ' take some action
        Case "CH2"
            ' take some action
        Case "CH3"
            ' take some action
        Case "CH4"
            ' take some action
    End Select

MyRibbon.InvalidateControl (control.id)
End Sub

Я отслеживал вызовы и знаю, что вызывается моя подпрограмма getUIHandle, и что вызывается вызов InvalidateControl. Это просто не делает недействительным элемент управления:)

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

РЕДАКТИРОВАТЬ:

Я реорганизовал код и изменил подпрограмму LabelCallback, чтобы установить переменную состояния, и у меня есть отдельная кнопка на ленте, которая фактически запускает подпрограммы "предпринять некоторые действия", чтобы обойти это. На мой взгляд неграмотный. (Смею ли я сказать, что неуклюже?) Имеет гораздо больше смысла предпринимать действия, когда выбран элемент dropBox, и будет прекрасно работать, если событие сработает независимо от того, какой элемент выбран.

0 ответов

Другие вопросы по тегам