如何向 RibbonX 中的 ComboBox 添加超过 1000 个项目?

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

我在 Word 中制作了一个自定义功能区,它有一个组合框。我想使用 VBA 宏用项目填充该 ComboBox。问题是 ComboBox 看起来只能容纳 1000 个项目。当我尝试放置超过 1000 个项目时,我只看到一个空的 ComboBox。

我该如何克服这个问题?

(我知道这可以通过用户表单来克服,但从功能区工作会更好。)

这是我的xml代码:

<customUI 
    xmlns="http://schemas.microsoft.com/office/2006/01/customui"
    onLoad="Ribbon_Load">
    <ribbon >
        <tabs >
            <tab 
                id="Tab1"
                label="CustomTab">
                <group id="Group1" 
                label="CustomGroup" >
                    <comboBox
                        id="comboBox1"
                        label="Elements:"
                        sizeString="WWWWWWWWWWWWWWWWWWWWWWWW"
                        getItemID="getElementID"
                        getItemLabel="getElementLabel"
                        getItemCount="getElementCount"/>
                    
                </group>
                
            </tab >
        </tabs >
    </ribbon >
</customUI >

以及我的 VBA 代码:

Dim myRibbon As IRibbonUI

Sub Ribbon_Load(ribbon As IRibbonUI)
    Set myRibbon = ribbon
    ribbon.ActivateTab "Tab1"
        
End Sub
Sub getElementID(control As IRibbonControl, index As Integer, ByRef id)

    id = "ID" & index
    
End Sub

Sub getElementLabel(control As IRibbonControl, index As Integer, ByRef label)

    label = "Element " & index
    
End Sub
Sub getElementCount(control As IRibbonControl, ByRef returnedVal)
    returnedVal = 1000
    
End Sub

如果返回的Val值为1001或更大,则ComboBox为空。

xml vba ms-word combobox ribbonx
1个回答
0
投票

解决方案如下:

您遇到的限制是 RibbonX 中 ComboBox 的一个已知问题。为了克服这个限制,您可以实施虚拟化。不要将所有项目直接填充到 ComboBox 中,而是根据用户交互按需填充它们。当用户与 ComboBox 交互时,动态加载并显示该特定交互的项目。这样,您就可以有效地解决 1000 项限制。

要实现此目的,您需要修改 VBA 代码以处理 ComboBox 交互并根据需要动态填充项目。这种方法允许您维护响应式用户界面,而不受组合框项目限制的限制。

© www.soinside.com 2019 - 2024. All rights reserved.