![Excel 2010 - 如何清除 RibbonX 下拉控件?](https://linux22.com/image/1314044/Excel%202010%20-%20%E5%A6%82%E4%BD%95%E6%B8%85%E9%99%A4%20RibbonX%20%E4%B8%8B%E6%8B%89%E6%8E%A7%E4%BB%B6%EF%BC%9F.png)
我正在努力通过 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 项目时采取行动更有意义,如果无论选择哪个项目都会触发事件,效果会很好。