在VBA中引用自动筛选结果

时间:2017-05-01 12:11:13

标签: excel vba excel-vba autofilter

我目前正在尝试使用VBA和自动过滤来查询数据集(根据Populate Excel Data Validation Drop-Down From Data Range Condition Using VBA

但是我无法使用VBA来引用自动过滤器结果。

如何在不需要复制和粘贴的情况下收集结果? (例如,将结果存储为变量)

如何查看已找到的结果数,并在自动过滤器没有产生结果时触发msg框?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可以使用特殊参数xlCellTypeVisible和SpecialCells。

Sub Test()

    Dim SheetERP As Worksheet
    Set SheetERP = Worksheets("MyDatas") 'Sheet with data

    Dim myTabela As Excel.ListObject
    Set myTabela = SheetERP.ListObjects("CodeData") 'Named Table range

    Dim qtd As Integer 'To count filtered data rows (only visible)
    qtd = SheetERP.ListObjects("CodeData").DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible).Count
    'OR
    qtd = myTabela.DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible).Count

    MsgBox qtd

    Dim TFiltro As Range
    Set TFiltro = SheetERP.UsedRange.SpecialCells(xlCellTypeVisible)
    'OR
    Set TFiltro = myTabela.DataBodyRange.SpecialCells(xlCellTypeVisible)

    'Do what you want with TFiltro

End Sub