组合框列表范围

时间:2019-01-11 16:45:32

标签: excel vba excel-2010

在用户窗体中,我插入了ComboBox,我必须通过Array添加列表,以下是代码。我想知道是否有可能在ComboBox列表中从工作表中的范围获取数据(例如在进行数据验证的情况下)

Private Sub UserForm_Initialize()

    ComboBox1.List = Array("Item1", "Item2", "Item3", "Item4")

End Sub

3 个答案:

答案 0 :(得分:2)

您可以使用工作表中的范围来创建甚至是命名范围,例如:

combobox1.list = range(cells(1,1),cells(100,1)).value

combobox2.list = sheets(1).range("NamedRange")

arr = array("1","2","3")
combobox3.list = arr

答案 1 :(得分:0)

这是您使用范围来设置组合框的行源的方式。您也可以在vba中执行此操作。

Me.combobox1.RowSource = "MyRange"

enter image description here

答案 2 :(得分:0)

您可以将其设置为表(ListObject)而不是静态范围。使用值列表创建表,而不只是使用静态单元格范围。这样,当您需要添加到列表中时,只需输入新值,这些新值将添加到表中。在我的示例中,我有一个名为“ Table1”的表和一个标题为“ Numbers”的列。然后调用此函数:

Private Sub UserForm_Initialize()
    ComboBox1.RowSource = "=Table1[Numbers]"
End Sub

您必须在Iniitalize上执行此操作,因为从ComboBox属性设置RowSource将导致Excel在您第一次向列表中添加项目时崩溃。

这为您提供了一个列表,您无需编辑UserForm后面的代码即可进行编辑。