gpt4 book ai didi

excel - 让用户在 VBA 工具栏中选择多个值

转载 作者:行者123 更新时间:2023-12-04 21:06:00 25 4
gpt4 key购买 nike

VBA 中有没有办法将列表框添加到工具栏(添加功能区)?我希望能够让用户在列表框中选择多个值/标准,而不是在下拉/组合框菜单中选择一个值。

下面的代码只添加了一个下拉菜单

Sub addSelectControls()
Dim newBar As Office.CommandBar
Set newBar = CommandBars.Add(Name:="testing CommandBar", temporary:=True)
Dim newCombo As Office.CommandBarComboBox
Set newCombo = newBar.Controls.Add(Type:=msoControlDropdown, temporary:=True)
With newCombo

.AddItem "Blocks"
.AddItem "Hardware"
.AddItem "Aircraft Hardware"
.AddItem "Vehical Hardware"
.AddItem "Machinery"
.AddItem "Wood Products"
.AddItem "Miscellaneous Products"
.AddItem "Miscellaneous Metal"
.AddItem "Precast Metal"
.AddItem "Forged Metal"
.AddItem "Structural Steel"
.AddItem "Fabricated Steel"
.AddItem "Prebent Steel"
.AddItem "Stock Steel"
.ListIndex = 13
.Width = 200
.Caption = "Category"
.Style = msoComboLabel
.BeginGroup = True
.OnAction = "Category_Select"

End With
'ctlComboBoxHandler.SyncBox newCombo
newBar.Visible = True
End Sub

请指教。如果您知道更好的方法来做到这一点,那也太好了!

最佳答案

古老的问题,但有一种方法可以在 Office 功能区中获得多选下拉菜单。不过不要太花哨,因为每次选择后,您都必须重新打开下拉菜单。
Example dropdown

您需要使用 DynamicMenuCheckboxes在里面。

这是我在自定义功能区 UI 中使用的 XML:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<tabs>
<tab id="mso_c1.FD142A8" label="Diaverum" insertBeforeQ="TabHome">
<group id="mso_c2.FD142A8" label="Szurés" imageMso="FilterByResource">
<dynamicMenu id="FilterMenu" label="Beosztás szerint" getContent="GetMenuContent_FilterMenu" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
GetMenuContent_FilterMenu回调用复选框填充动态菜单。它基本上创建了一个 XML 字符串,其中包含创建复选框的命令。我使用 Table在 Excel 中获取值,但您可以更改它。回调代码:
Sub GetMenuContent_Beosztas(control As IRibbonControl, ByRef returnedVal)

Dim CheckboxesXML As String
Dim myCell As Range
Dim i As Integer

For Each myCell In Range("tblBeosztas").Cells
CheckboxesXML = CheckboxesXML & "<checkBox id=""chk_" & i & """ label=""" & myCell.Value & """ />" & vbNewLine
i = i + 1
Next myCell

returnedVal = "<menu xmlns=""http://schemas.microsoft.com/office/2006/01/customui"">" & vbNewLine & _
CheckboxesXML & _
"</menu>"

End Sub

生成的 XML 如下所示:
<menu xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<checkBox id="chk_0" label="Nővér" />
<checkBox id="chk_1" label="Dializáló asszisztens" />
<checkBox id="chk_2" label="Technikus" />
<checkBox id="chk_4" label="Orvos igazgató" />
</menu>

关于excel - 让用户在 VBA 工具栏中选择多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com