VBA - 自定义选项卡 Excel 菜单 - 组合框 - 用户选择后重置

问题描述 投票:0回答:1

早上好, 我使用 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

感谢任何可以帮助我找到解决方案的人。

菲利普

excel vba combobox ribbonx
1个回答
0
投票

我希望组合框返回到不执行任何操作的“选择”(法语为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
© www.soinside.com 2019 - 2024. All rights reserved.