我在 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为空。
解决方案如下:
您遇到的限制是 RibbonX 中 ComboBox 的一个已知问题。为了克服这个限制,您可以实施虚拟化。不要将所有项目直接填充到 ComboBox 中,而是根据用户交互按需填充它们。当用户与 ComboBox 交互时,动态加载并显示该特定交互的项目。这样,您就可以有效地解决 1000 项限制。
要实现此目的,您需要修改 VBA 代码以处理 ComboBox 交互并根据需要动态填充项目。这种方法允许您维护响应式用户界面,而不受组合框项目限制的限制。