Excel 2010 - 如何清除 RibbonX 下拉控件?

Excel 2010 - 如何清除 RibbonX 下拉控件?

我正在努力通过 Excel 2010 中的 VBA 代码清除下拉选择。我想要这样做的原因是,如果您连续单击同一项而不先更改为另一项,则 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 调用被调用。它只是没有使控件无效 :)

是否有一种方法可以清除下拉 RibbonX 控件的当前选定值?

编辑:

我重构了代码,并更改了 LabelCallback 子例程以设置状态变量,并在功能区中设置了一个单独的按钮来触发“采取一些行动”例程,以解决这个问题。在我看来,这很不雅致。(我敢说它很笨重吗?)当选择 dropBox 项目时采取行动更有意义,如果无论选择哪个项目都会触发事件,效果会很好。

相关内容