
我正在努力透過 Excel 2010 中的 VBA 程式碼清除下拉選擇。
我做了一些挖掘並了解到 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 項目時採取操作更有意義,並且如果無論選擇哪個項目都會觸發該事件,效果都會很好。