Vba 自动筛选后获取可见范围

Vba 自动筛选后获取可见范围,vba,excel,Vba,Excel,我正在尝试将筛选的行选择到范围变量xRange。我需要在那个范围内做些手术。筛选之前有10000多行。过滤后,它是5000行。所以在过滤之后,我尝试了这个方法来获得过滤范围,它并没有像我期望的那样工作 With Sheets("FullInvoice").Range("A1:N" & lRow) .AutoFilter .AutoFilter Field:=6, Criteria1:=">=" & fD, Criteria2:="<=" & l

我正在尝试将筛选的行选择到范围变量
xRange
。我需要在那个范围内做些手术。筛选之前有10000多行。过滤后,它是5000行。所以在过滤之后,我尝试了这个方法来获得过滤范围,它并没有像我期望的那样工作

With Sheets("FullInvoice").Range("A1:N" & lRow)
    .AutoFilter
    .AutoFilter Field:=6, Criteria1:=">=" & fD, Criteria2:="<=" & lD

End With
Set xRange = Sheets("FullInvoice").Cells.SpecialCells(xlCellTypeVisible)
它返回整行的第一个单元格值。不是从筛选的行

那么如何解决这种情况呢。

试试下面的代码

    With Sheets("FullInvoice").Range("A1:N" & lrow)
    .AutoFilter
    .AutoFilter Field:=6, Criteria1:=">=" & fd, Criteria2:="<=" & ld
End With

With Sheets("FullInvoice").Range("A1").CurrentRegion
    Set xRange = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
End With
MsgBox xRange.Address

Dim s As String
s = xRange.Range("A1").Value
MsgBox s
带表单(“完整发票”)。范围(“A1:N”和lrow)
.自动过滤器

.AutoFilter字段:=6,Criteria1:=“>=”&fd,Criteria2:=”甚至比这更简单。只需将
xrange
带到您的
中,使用
Range.Cells(x,y)
而不是
Range.Range
即可获得范围内的单元格:

With Sheets("FullInvoice").Range("A1:N" & lRow)
    .AutoFilter
    .AutoFilter Field:=6, Criteria1:=">=" & fD, Criteria2:="<=" & lD
    Set xrange = .SpecialCells(xlCellTypeVisible)
End With

MsgBox xrange.Cells(1, 1)
带表单(“完整发票”)。范围(“A1:N”和lRow)
.自动过滤器
.自动筛选字段:=6,标准1:=“>=”&fD,标准2:=”
With Sheets("FullInvoice").Range("A1:N" & lRow)
    .AutoFilter
    .AutoFilter Field:=6, Criteria1:=">=" & fD, Criteria2:="<=" & lD
    Set xrange = .SpecialCells(xlCellTypeVisible)
End With

MsgBox xrange.Cells(1, 1)