让用户在VBA工具栏中select多个值

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

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

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 

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

古老的问题,但有办法在办公室function区中获得多选下拉菜单。 不过如此,作为每一个select后,你将不得不重新打开下拉菜单。 示例下拉菜单

您需要在其中使用带有CheckboxesDynamicMenu

以下是我在自定义function区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_FilterMenucallback用checkbox填充dynamic菜单。 它基本上创build一个XMLstring,其中包含创buildcheckbox的命令。 我在Excel中使用Table来获取值,但是你可以改变它。 callback的代码:

 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>