提问人:eszenyid 提问时间:8/27/2023 更新时间:8/27/2023 访问量:77
如何在 RibbonX 中将 1000 多个项目添加到 ComboBox?
How to add more than 1000 items to a ComboBox in RibbonX?
问:
我在 Word 中制作了一个自定义功能区,它有一个 ComboBox。我想使用 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 为空。
答:
-1赞
kaylei sidharth
8/27/2023
#1
这是解决方案:
您遇到的限制是 RibbonX 中 ComboBox 的已知问题。要克服此限制,您可以实现虚拟化。不要将所有项目直接填充到 ComboBox 中,而是根据用户交互按需填充它们。当用户与 ComboBox 交互时,动态加载并显示该特定交互的项目。这样,您可以有效地解决 1000 项的限制。
为此,您需要修改 VBA 代码以处理 ComboBox 交互并根据需要动态填充项目。此方法允许您维护响应式用户界面,而不受 ComboBox 项目限制的约束。
评论
0赞
Super Symmetry
8/27/2023
好主意,但只有在用户知道他们在寻找什么时才有效。这“虚拟化”是怎么回事?(只是好奇)
0赞
eszenyid
8/27/2023
好主意,但是您如何按需填充它?我只知道onAction回调函数,但它并不能解决问题,因为它只有在用户完成输入时才会调用。是否可以在键入时以数字方式更改组合框?
0赞
John Korchok
8/28/2023
一个好的答案将包括VBA代码,以显示如何实现您的建议。
3赞
Tim Williams
8/28/2023
...“现在画出猫头鹰的其余部分”
1赞
Adrian Mole
8/29/2023
这个答案的风格看起来很像 ChatGPT;也适用于您的大多数/所有其他答案。请注意,不允许在 Stack Overflow 上发布 AI 生成的内容。
评论