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

时间:2017-12-20 12:40:20

标签: excel excel-vba combobox vba

我有一个范围包含单元格,其内容我想用于通过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相关联?即使是正确方向的指针也非常感谢!

非常感谢提前!

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

3 个答案:

答案 0 :(得分:1)

你应该改变这个:

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

对于这样的事情:

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

或者这也可以:

cb_FcnName.RowSource = "NameRng"

答案 1 :(得分:1)

这很麻烦,但我认为它会起作用。它将值放在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

答案 2 :(得分:0)

试试这个:

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

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