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

问题描述 投票:-1回答:3

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

提前谢谢了!

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

excel excel-vba combobox vba
3个回答
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

1
投票

你应该改变这个:

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

对于这样的事情:

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

或者这也会做:

cb_FcnName.RowSource = "NameRng"

0
投票

试试这个:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.