我试图选择过滤行到范围变量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)
我在Set xRange线上添加了一个断点。并尝试了xRange.rows.count。但它刚刚返回1即使有5000行。那么我的目的是在过滤后获取第一个单元格的单元格值。我怎样才能做到这一点。
当我尝试
dim s as string
s=xRange.Range("A1").value
它返回整行的第一个单元格值。不是来自过滤的行。
那么如何解决这种情况呢。
试试这个代码
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
它比那更容易。只需将xrange
带入你的With
。此外,我使用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)