Excel 2010 – wie löscht man ein RibbonX-DropDown-Steuerelement?

Excel 2010 – wie löscht man ein RibbonX-DropDown-Steuerelement?

Ich habe Probleme, eine Dropdown-Auswahl per VBA-Code in Excel 2010 zu löschen. Der Grund dafür ist, dass das Ereignis „onAction“ nicht ausgelöst wird, wenn Sie mehrmals hintereinander auf dasselbe Element klicken, ohne vorher zu einem anderen Element zu wechseln.

Ich habe ein bisschen nachgeforscht und gelesen, dass die Methode InvalidateControl den zwischengespeicherten Wert eines Steuerelements löscht. Also habe ich sie implementiert und ...

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

Ich habe die Aufrufe verfolgt und weiß, dass mein getUIHandle-Sub aufgerufen wird und dass der InvalidateControl-Aufruf aufgerufen wird. Es macht das Steuerelement einfach nicht ungültig : )

Gibt es eine Methode, die den aktuell ausgewählten Wert eines Dropdown-RibbonX-Steuerelements löscht?

BEARBEITEN:

Um dies zu umgehen, habe ich den Code überarbeitet und die LabelCallback-Subroutine geändert, um eine Statusvariable festzulegen und eine separate Schaltfläche im Menüband einzurichten, die die Routinen zum Ausführen einer Aktion tatsächlich auslöst. Meiner Meinung nach unelegant. (Kann ich sagen, dass es klobig ist?) Es ist viel sinnvoller, die Aktion auszuführen, wenn das DropBox-Element ausgewählt wird, und es würde wunderbar funktionieren, wenn das Ereignis unabhängig davon ausgelöst würde, welches Element ausgewählt ist.

verwandte Informationen