Excel 2010 - como você limpa um controle DropDown RibbonX?

1

Estou lutando para limpar uma seleção suspensa via código VBA no Excel 2010. O motivo pelo qual quero fazer isso é porque o evento onAction não é acionado se você clicar no mesmo item consecutivamente sem alterar primeiro para outro item. / p>

Eu fiz algumas pesquisas e li que o método InvalidateControl limpa o valor em cache de um controle. Então, eu implementei e ...

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

Eu rastreei as chamadas e sei que meu sub getUIHandle está sendo chamado e que a chamada InvalidateControl está sendo chamada. Simplesmente não invalida o controle:)

Existe um método que limpa o valor atualmente selecionado de um controle DropDown RibbonX?

EDITAR:

Eu refatorei o código e mudei a sub-rotina LabelCallback para definir uma variável de estado, e ter um botão separado na Faixa de Opções realmente acionou as rotinas 'take some action', para contornar isso. Deselegante na minha opinião. (Atrevo-me a dizer desajeitado?) Faz muito mais sentido tomar a ação quando o item dropBox é selecionado, e funcionaria muito bem se o evento fosse disparado independentemente de qual item estivesse selecionado.

    
por Adam Lawrence 07.05.2012 / 22:12

0 respostas