Xml MS Word自定义UI组合框项目ID

Xml MS Word自定义UI组合框项目ID,xml,vba,combobox,ms-word,Xml,Vba,Combobox,Ms Word,我正试图在功能区上为Microsoft Word(2010)制作一个组合框。我将使用XML代码的自定义UI编辑器,然后使用Word中的组合框选择来运行宏 我对这个很陌生,所以这是一个非常基本的问题。我的问题是,在Word内部,我无法使用Select Case来判断单击了哪个组合框。我曾期望我可以基于项目ID来做一个案例,但事实并非如此(没有双关语)。在回调中使用IRibbonControl,如果我尝试对control.Id执行Select Case,它将只对combobox Id有效 以下是我的

我正试图在功能区上为Microsoft Word(2010)制作一个组合框。我将使用XML代码的自定义UI编辑器,然后使用Word中的组合框选择来运行宏

我对这个很陌生,所以这是一个非常基本的问题。我的问题是,在Word内部,我无法使用Select Case来判断单击了哪个组合框。我曾期望我可以基于项目ID来做一个案例,但事实并非如此(没有双关语)。在回调中使用IRibbonControl,如果我尝试对control.Id执行Select Case,它将只对combobox Id有效

以下是我的XML代码:

    <comboBox 
        id="Combo1" 
        label="Add Function Switch"
        onChange="OnChange">
                <item id="CB_SC" label="Add SC Switch" />
                <item id="CB_GT" label="Add GT Toggle" />
                <item id="CB_HT" label="Add HT Switch" />
    </comboBox>

我已经有一段时间没有这样做了,但是根据您的代码,您的
Select
语句似乎是在控件的id上键入的。我假设你总是得到
Else
子句


您需要改为检查
文本
值。

我已经尝试使用文本值,我也应该在上面提到……问题是,选择案例仍然无法在项目ID之外工作。如果我执行
选择案例文本
案例“添加SC开关”,它将工作但是,硬编码文本值对于我必须编程的某些内容来说并不理想。从MSDN“每当选择组合框的值时,onChange回调都会接收文本。但是,无法获取所选内容的索引。”听起来您需要动态控制功能区。请在ribbon上查看这一系列文章。带有
get
前缀的回调可能对您有用,因为它们允许在加载时自定义功能区,或根据用户事件进行更新。希望这有帮助!太好了,这回答了我关于这是否可能的问题。我将更深入地研究这两个链接。谢谢
'Callback for Combo1 onChange
Sub OnChange(control As IRibbonControl, text As String)

Select Case control.id

    Case "CB_SC"
       Do Something
    Case "CB_GT"
       Do Something
    Case "CB_HT"
       Do Something
    Case Else
       Selection.TypeText text:="Selection wasn't registered"

End Select

End Sub