我想得到自动过滤的行数。
我用了这个代码
With xlsWkSheet
With .Range("A1").CurrentRegion
.AutoFilter Field:=4, Criteria1:="88684240"
.AutoFilter Field:=19, Criteria1:="88684239"
Set xlsRangeAutoFilter = .SpecialCells(xlCellTypeVisible)
End With
End With
但我不知道如何使用xlsRangeAutoFilter来获得自动过滤(可见(行数
非常感谢您的帮助
您可以使用WorksheetFunction.Tsubtotal方法来计算可见的行数和其中有数据的行数(注意,可见的空格将不计算在内(:
NumberOfRows = Application.WorksheetFunction.Subtotal(3, xlsWkSheet.Range("A1:A" & xlsWkSheet.Range("A1").CurrentRegion.Rows.Count))
或者更可靠的方法:
xlsWkSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1
根据注释编辑:
若要输出所有已筛选的行号,必须在区域中循环。
With .Range("A1").CurrentRegion
Dim Area As Range
For Each Area In .Columns(1).SpecialCells(xlCellTypeVisible).Cells.Rows.Areas
Dim AreaRow As Range
For Each AreaRow In Area.Rows
Debug.Print AreaRow.Row 'output each row number in intermediate window
Next AreaRow
Next Area
End With