【问题标题】:Multiple ranges to populate single column combobox多个范围以填充单列组合框
【发布时间】:2016-08-31 02:43:47
【问题描述】:

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

我有 3 个命名范围,我想将它们组合成一个组合框列表。

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

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

而我的其他组合框是在用户窗体上设置的,使用以下内容进行初始化:

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

我需要一种方法将我的列表发送到 =namedrange1 & namedrange2 & namedrange3

提前感谢您的任何指导。

【问题讨论】:

  • 试试我下面回答中的代码

标签: excel combobox vba


【解决方案1】:

试试下面的代码(在您的 UserForm_ActivateUserForm_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。
【解决方案2】:

据我所知,无法将命名范围连接到 .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
....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 2021-09-23
    • 2016-02-29
    • 1970-01-01
    • 2020-07-19
    • 2015-03-01
    • 2018-02-20
    相关资源
    最近更新 更多