这是另一个奇怪的问题。
我有这段代码,它使用过滤器从一张表中获取数据,并使用该Range.SpecialCells()
方法查找要复制和粘贴的适当行。但是,如果我使用Rows().SpecialCells()
或者如果我使用了由行SpecialCells
数返回的范围的行属性是错误的。这就是我的意思:
With Worksheets("ret-" & sNumRet)
.EnableAutoFilter = True
.AutoFilter.Range.AutoFilter Field:=3, Criteria1:=sSection
iLast = Range("C1").End(xlDown).Row
numRows = .Range("B2:B" & iLast).SpecialCells(xlCellTypeVisible).Cells.Count
End With
此代码产生大约 8k 行,这是一个有意义的数字。
With Worksheets("ret-" & sNumRet)
.EnableAutoFilter = True
.AutoFilter.Range.AutoFilter Field:=3, Criteria1:=sSection
iLast = Range("C1").End(xlDown).Row
numRows = .Rows("2:" & iLast).SpecialCells(xlCellTypeVisible).Rows.Count
End With
结果是 4。
With Worksheets("ret-" & sNumRet)
.EnableAutoFilter = True
.AutoFilter.Range.AutoFilter Field:=3, Criteria1:=sSection
iLast = Range("C1").End(xlDown).Row
numRows = .Range("B2:B" & iLast).SpecialCells(xlCellTypeVisible).Rows.Count
End With
结果也产生 4。这两个当然是错误的。我有 45k 行数据,我可以看到使用过滤器至少显示了几千行。这些陈述之间是否存在一些我缺少的含义?我希望它们在这里的上下文中几乎是等价的。
谢谢 !