Я изо всех сил пытаюсь очистить выбор 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, и оно будет работать прекрасно, если событие сработает независимо от того, какой элемент выбран.