基本上,组合框的功能将类似于过滤条件。因此,每次更改组合框的值时,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}中的整个帮助工作表}事件,每次更改组合框的值。
我可以问一下是否有更快/更轻松/更有效的方法来实际完成此任务?