填充单列组合框的多个范围

时间:2016-08-30 17:03:45

标签: excel-vba combobox vba excel

如果这是一个愚蠢的问题,我很抱歉,但我无法在任何地方找到答案,只有101种方法可以创建一个多列组合框。

我有3个命名范围,我想要组合成一个组合框的列表。

我不想简单地将所有这些组合到范围所在的一个列/范围中,因为我有另一个组合框的用户形式,根据之前的用户选择,它会变为这3个范围中的一个。

我只是(显然对我来说不是这样)想要一个长列表,其中包含来自每个命名范围的数据。

而我的其他组合框在userform上设置初始化类似于:

combobox1.list = Range("NamedRange1").Value

我需要一种方法将我的列表设为= namedrange1 & namedrange2 & namedrange3

提前感谢任何方向。

2 个答案:

答案 0 :(得分:2)

尝试以下代码(在 UserForm_Activate UserForm_Initialize 事件中):

Private Sub UserForm_Activate()

Dim UnionRange          As Range
Dim cell                As Range

' use Union to merge as many named ranges you need
Set UnionRange = Union(Range("NamedRange1"), Range("NamedRange2"), Range("NamedRange3"))

Me.ComboBox1.Clear

For Each cell In UnionRange
    ComboBox1.AddItem cell.Value
Next cell
ComboBox1.ListIndex = 0

End Sub

答案 1 :(得分:1)

据我所知,不可能将命名范围连接到.list或.rowsource属性。 相反,您可以遍历范围并添加其值:

Dim rCell As Range

For Each rCell In Worksheets("YourSheet").Range("namedrange1")

    ComboBox1.AddItem rCell.Value

Next rCell

For Each rCell In Worksheets("YourSheet").Range("namedrange2")

    ComboBox1.AddItem rCell.Value

Next rCell
....