动态范围和一个静态项目通过VBA到ComboBox

时间:2016-12-20 13:34:03

标签: excel vba excel-vba dynamic combobox

我有这段代码:

With Sheet1.Shapes("comboBox1").ControlFormat
    .ListFillRange = "namedRange"
    .AddItem "1.Item"
End With

但在那之后,只有“1.Item”在我的Combo-Box中,动态范围根本没有出现。

如何将一个 Item和我的Range添加到Combo-Box

修改

如果我删除range

,动态.AddItem就可以了
With Sheet1.Shapes("comboBox1").ControlFormat
    .ListFillRange = "namedRange"
End With

我的问题是,是否有可能将这些组合在一个范围内,而不是彼此分开。

非常感谢您的答案...

2 个答案:

答案 0 :(得分:2)

如果我理解了你的帖子,你想要在你的" namedRange"中添加另一个项目。并在工作表ComboBox中显示所有这些项目(实际上是工作表中的下拉列表)。

(修改" Sheet2"到你的表格名称)。

Sub PopulateCombo_fromArray()

Dim ComboArray As Variant

'clear Combo-Box from previous runs >> modify "Sheet2" to your sheet's name
Worksheets("Sheet2").Shapes("ComboBox1").ControlFormat.RemoveAllItems

' reading the NamedRange into a 1-dimension array
ComboArray = Application.Transpose(Range("namedRange").Value)

ReDim Preserve ComboArray(UBound(ComboArray))
' add another element to the array (outside the "namedRange")
ComboArray(UBound(ComboArray)) = "1.Item"

' populate "ComboBox1" with array
Worksheets("Sheet2").Shapes("comboBox1").ControlFormat.List = ComboArray

End Sub

答案 1 :(得分:1)

你必须使用“形状”吗?

如果没有,您可以使用如下命名区域填充组合框:

With Sheet1.ComboBox1
    .List = Application.Transpose(Range("namedRange"))
    .AddItem "1.Item"
End With