我试图将过滤的行选择到范围变量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
返回整行的第一个单元格值。不是来自过滤后的行。
那么如何解决这种情况。
答案 0 :(得分:2)
比这更容易。只需将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)
答案 1 :(得分:1)
试试此代码
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