如果这是一个愚蠢的问题,我很抱歉,但我无法在任何地方找到答案,只有101种方法可以创建一个多列组合框。
我有3个命名范围,我想要组合成一个组合框的列表。
我不想简单地将所有这些组合到范围所在的一个列/范围中,因为我有另一个组合框的用户形式,根据之前的用户选择,它会变为这3个范围中的一个。
我只是(显然对我来说不是这样)想要一个长列表,其中包含来自每个命名范围的数据。
而我的其他组合框在userform上设置初始化类似于:
combobox1.list = Range("NamedRange1").Value
我需要一种方法将我的列表设为= namedrange1 & namedrange2 & namedrange3
提前感谢任何方向。
答案 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
....