不带VBA的动态组合框ListFillRange

时间:2020-04-01 15:41:07

标签: excel dynamic combobox

我有一个Excel文档,我需要在没有VBA的情况下将部署到我的同事。我要动态填充其工作表之一中的组合框。组合框的内容是来自不同工作簿的数据查询的结果,因此行数可能会有所不同。

我创建了一个临时子程序只是为了分配ListFillRange。我添加了到目前为止我没有成功完成的所有尝试...

Sub SetListFillRange()
    ComboBox1.ListFillRange = "=MyQueryTable[SomeColumn]"
    ComboBox1.ListFillRange = "=TestName" 'A named Range pointing to MyQueryTable[SomeColumn]
    ComboBox1.ListFillRange = "=[TestName]"
    ComboBox1.ListFillRange = "='SheetX'!A2:INDEX('SheetX'!$A:$A,COUNTA('SheetX'!$A:$A))"
    ComboBox1.ListFillRange = "=OFFSET('SheetX'!A2,0,0,COUNTA('SheetX'!$A:$A) - 1,1)"
End Sub

我要使用ActiveX ComboBox的要点是自动完成功能,该功能在Excel随附的ComboBox窗体中是缺少的(实际上您根本不能在其中键入文本...)。

1 个答案:

答案 0 :(得分:0)

如果您使用普通的Excel表,则可以改用List

Sub SetListFillRange()
    ComboBox1.List = ActiveSheet.ListObjects("Table1").ListColumns("SomeColumn").DataBodyRange.Value
End Sub

如果您想使用ListFillRange,可以尝试

ComboBox1.ListFillRange = ActiveSheet.ListObjects("Table1").ListColumns("SomeColumn").DataBodyRange.Address