【问题标题】:MS-Word Custom UI Combobox item IDMS-Word 自定义 UI 组合框项目 ID
【发布时间】:2013-10-26 00:13:04
【问题描述】:

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

我对此很陌生,所以这是一个非常基本的问题。我的问题是在 Word 内部,我无法使用 Select Case 来判断单击了哪个 Combobox 选项。我期待我可以根据项目 ID 做一个案例,但事实并非如此(没有双关语的意思)。在回调中使用 IRibbonControl,如果我尝试在 control.Id 上执行 Select Case,它将仅适用于组合框 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>

还有我的 VBA 代码

'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

【问题讨论】:

    标签: xml vba combobox ms-word


    【解决方案1】:

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

    您需要改为检查 text 值。

    【讨论】:

    • 我已经尝试过使用文本值,我应该在上面也提到过......问题是选择案例仍然无法使用项目 ID。如果我执行Select case text case "Add SC Switch",它将起作用,但对文本值进行硬编码对于我必须编写的一些东西来说并不理想。
    • 从msdn中“选择组合框的值,on Change回调都会收到文本。但是,不可能获得选择的索引。” msdn.microsoft.com/en-us/library/aa722523%28v=office.12%29.aspx
    • 听起来你需要动态控制功能区。总体上查看功能区上的这一系列文章。带有get 前缀的回调可能对您有用,因为它们允许在加载时自定义功能区,或根据用户事件进行更新。希望这可以帮助! msdn.microsoft.com/en-us/library/aa338202%28v=office.12%29.aspx
    • 太好了,这回答了我关于它是否可能的问题。我将更深入地研究这两个链接。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多