excel 使用具有可变过滤器可能性的Column填充combobox.list或rowsource

qmelpv7a  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(106)

我有一个电子表格,其中包含一个表,我使用一个用户表单来过滤表数据,以显示例如零件在物料清单是钣金或采购项目。
由于这个过滤过程改变了零件号列,我希望用户表单上的组合框反映出现在显示的过滤结果列中的值。
目前,当电子表格在Userform初始化子程序中未过滤时,userform获取行源
有谁知道一个解决方案,可以帮助支持我的问题?
我尝试运行一个宏来选择源

Dim RNG As Range

Set RNG = Nothing
Set RNG = Selection.SpecialCells(xlCellTypeVisible)

me.combobox2.list = RNG

然后做一个参考的选择,但是我觉得会有一个更好的办法。

ni65a41a

ni65a41a1#

您可以循环遍历可见范围内的每个单元格,并将这些值添加到数组中。然后将数组分配给列表框。
顺便说一句,如果选择了一个对象,你会得到一个错误。我建议使用ActiveWindow对象的RangeSelection属性。
试试这样的东西。。

Dim selectedRange As Range
Set selectedRange = ActiveWindow.RangeSelection.SpecialCells(xlCellTypeVisible)

Dim filteredData() As Variant
ReDim filteredData(1 To selectedRange.Cells.Count)

Dim recordCount As Long
recordCount = 0

Dim currentCell As Range
For Each currentCell In selectedRange
    recordCount = recordCount + 1
    filteredData(recordCount) = currentCell.Value
Next currentCell

Me.ComboBox2.List = filteredData

相关问题