使用非连续范围的值通过RowSource属性填充UserForm Combobox

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用非连续范围的值通过RowSource属性填充UserForm Combobox相关的知识,希望对你有一定的参考价值。

我有一个范围包含单元格,其内容我想用于通过RowSource属性填充Userform ComboBox。但是,我似乎没有让它工作。我尝试了各种不同的方法,但似乎没有任何工作!

以下是我尝试过的一系列方法:

cb_FcnName.RowSource = Worksheets(3).Name & "!" & NameRng.Address
cb_FcnName.RowSource = Worksheets(3).Name & "!" & NameRng.Value
cb_FcnName.RowSource = Worksheets(3).Name & "!" & Range(NameRng)
cb_FcnName.RowSource = Worksheets(3).Name & "!" & Range("NameRng")
cb_FcnName.RowSource = Worksheets(3).Name & "!" & Range("NameRng").Address
cb_FcnName.RowSource = "'" & Worksheets(3).Name & "'!" & NameRng.Address
cb_FcnName.RowSource = Worksheets("Features") & "!" & NameRng.Value
cb_FcnName.RowSource = "'" & Worksheets("Features") & "!'" & "B2.Value"

有没有人知道如何从单元格中获取值到我的ComboBox?即使是正确方向的指针也非常感谢!

提前谢谢了!

编辑:不确定这是否是问题的一部分,但范围不连续!

答案

这相当麻烦,但我认为它会起作用。它将值放在AQ列中,只需更改为您不使用的位置或放在隐藏的工作表上。我上面说的替代方法是使用AddItem。

Private Sub UserForm_Initialize()

Dim r As Range, r1 As Range

With Worksheets(2)
    Set r = Union(.Range("A1:A10"), .Range("B1:B3"))
    For Each r1 In r.Areas
        r1.Copy .Range("AQ" & Rows.Count).End(xlUp)(2)
    Next r1
    Me.ComboBox1.RowSource = .Name & "!" & .Range("AQ2").CurrentRegion.Address
End With

End Sub
另一答案

你应该改变这个:

cb_FcnName.RowSource = Worksheets("Features") & "!" & NameRng.Value

对于这样的事情:

cb_FcnName.List = Worksheets("Features").Range("NameRng").Value

或者这也会做:

cb_FcnName.RowSource = "NameRng"
另一答案

试试这个:

cb_FcnName.RowSource = Range("NameRng").Worksheet.Name & "!" & Range("NameRng").Address

它可以进一步简化,但上面假设您有一个命名范围,但它不会猜测它是什么工作表。

以上是关于使用非连续范围的值通过RowSource属性填充UserForm Combobox的主要内容,如果未能解决你的问题,请参考以下文章

如何通过设置 Text 属性来强制匹配 Combobox RowSource 行?

缺失值的常见填充方法

RowSource 查询隐藏列?语法问题

技巧 Pandas 数据填充

网格中的填充点 - 前向欧拉算法 - 输出错误

MiniZinc决策变量非连续范围