如何使用VBA excel基于组合框上编写的值创建动态列表框?

时间:2018-11-19 08:42:32

标签: excel vba excel-vba

enter image description here

基本上,组合框的功能将类似于过滤条件。因此,每次更改组合框的值时,AfterUpdate事件都会运行一个代码,该代码应更新列表框以仅包含符合该条件的值。

我的计划是使用Autofilter实际执行此操作,然后使用SpecialCells(xlCellTypeVisible)设置行源。

初始代码提示:

Private Sub cbxSupplier_AfterUpdate()
Dim Suppler_col As Long
    Supplier_col = ThisWorkbook.Worksheets("Foil Profile").ListObjects("tblFoilProfile").ListColumns("SUPPLIER").Index
    filterRangeFoilProfile.AutoFilter Field:=Supplier_col, Criteria1:=cbxSupplier.Text
    lbxFoilInfoDisplay.RowSource = ThisWorkbook.Worksheets("Foil Profile").ListObjects("tblFoilProfile").Range.SpecialCells(xlCellTypeVisible)
End Sub

但是,我的问题是Rowsource方法使用的字符串假设一个excel公式引用,例如:lbxFoilInfoDisplay.RowSource ="'Foil Profile'!A1:K5",并且您不能使用VBA语言分配rowsource方法的值。 / p>

这里的问题是,Rowsource中甚至将使用过滤范围之间的值。此处的解决方法是仅使用SpecialCells(xlCellTypeVisible)来复制“帮助工作表”中表格的可见单元格,但我担心的是,我需要清除{{1}中的整个帮助工作表}事件,每次更改组合框的值。

我可以问一下是否有更快/更轻松/更有效的方法来实际完成此任务?

0 个答案:

没有答案