To work with the visible cells of an AutoFilter, you have to use Offset
if you are planning to exclude Headers. The error you are getting is because you are missing a "." before Cells(2,11)
'~~> Remove any filters
ActiveSheet.AutoFilterMode = False
'~~> Filter,
With rRange
.AutoFilter Field:=1, Criteria1:=strCriteria
'~~> offset(to exclude headers)
Debug.Print .Offset(1, 0).SpecialCells(xlCellTypeVisible).Cells(2,11).Value
Debug.Print .SpecialCells(xlCellTypeVisible).Cells(2,11).Value
End With
'~~> Remove any filters
ActiveSheet.AutoFilterMode = False
I decided to add this as a part of this answer so that it might help someone else in the future.
Let's say our range is
A1:F6
When you run the below code, depending on whether you are using Offset
or not, you will get these results.
Option Explicit
Sub Sample()
'~~> Remove any filters
ActiveSheet.AutoFilterMode = False
Dim rRange As Range
Dim Rnge As Range
Set rRange = Sheets("Sheet1").Range("A1:F6")
'~~> Filter,
With rRange
.AutoFilter Field:=1, Criteria1:="<>2"
'~~> Offset(to exclude headers)
Set Rnge = .Offset(1, 0).SpecialCells(xlCellTypeVisible)
Debug.Print Range(Rnge.Address).Address
Debug.Print ActiveSheet.Cells(3, 2).Address
Debug.Print Range(Rnge.Address).Cells(3, 2).Address
Debug.Print "--------------------------------------------------"
'~~> To include headers
Set Rnge = .SpecialCells(xlCellTypeVisible)
Debug.Print Range(Rnge.Address).Address
Debug.Print ActiveSheet.Cells(3, 2).Address
Debug.Print Range(Rnge.Address).Cells(3, 2).Address
End With
'~~> Remove any filters
ActiveSheet.AutoFilterMode = False
End Sub
HTH
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…