早上好, 我使用 Office Ribbon X 编辑器创建了一个个性化菜单,其中包括一个带有两个 3 个选项(选择、升序和降序)的组合框。当用户选择降序时,将执行按升序对列进行排序的例程,而对于其他选项则按降序排序。一旦排序例程完成,我希望组合框返回到不执行任何操作的“选择”(法语为Choix)项目。我试图找到解决方案,但我仍然保持干燥。 代码 XML
<comboBox id="Tri_Col" label="Tri_colonne"
screentip="Tri la base selon le contenu de la colonne Active"
supertip="Filtrez la base des écriture selon la colonne active, vous pourrez retrouver un ordre logique avec le bouton tri complet"
onChange="Tri_Col"
getItemLabel="Tri_ColGetLabel"
getItemCount="Tri_ColGetCount" >
<!--Chaque item correspond à un élément de la liste déroulante :-->
<item id="itF0" label="Choix" imageMso="Help" />
<item id="itF1" label="Ascendant" imageMso="SortAscendingExcel" />
<item id="itF2" label="Descendant" imageMso="SortDescendingExcel" />
</comboBox>
代码VBA
'*Callback for Tri_Col onChange
Sub Tri_Col(control As IRibbonControl, text As String)
'Suivre le choix de l'utilisateur
MsgBox "Vous avez choisi : " & text
'Exécuter le code TrierTableau_Col
TrierTableau_Col text
'>>>>here code to restore Tri_Col cotrol on "Choix" ?
End Sub
感谢任何可以帮助我找到解决方案的人。
菲利普
我希望组合框返回到不执行任何操作的“选择”(法语为Choix)项目。
当您需要更新功能区控件的状态时,请使用回调,您可以在其中返回控件所需的状态,并调用
Invalidate
接口的 InvalidateControl
或 IRibbonUI
方法来获取由Office 并更新功能区控件状态。
例如,如果外接程序编写器为按钮实现了
getEnabled
回调过程,则调用该函数一次,加载状态,然后如果需要更新状态,则使用缓存的状态而不是调用程序。此过程对控件保持不变,直到加载项使用 InvalidateControl
方法发出信号表明缓存的值无效,此时,再次调用回调过程并缓存返回响应。
要获取
IRibbonUI
接口的实例,您需要指定 onLoad
回调:
<customUI … OnLoad="MyAddInInitialize" …>
然后在代码中您可以使用以下内容:
Dim MyRibbon As IRibbonUI
Sub MyAddInInitialize(Ribbon As IRibbonUI)
Set MyRibbon = Ribbon
End Sub
Sub myFunction()
MyRibbon.InvalidateControl("control1") ' Invalidates the cache of a single control
End Sub