如何确定工作表中使用的总行数?
Dim rows As Integer
rows = ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(1, 0).Rows.Count
我需要知道,所以我可以循环遍历所有行:
For row = 1 To rows
' Check if row contains pattern.
match = ReFind(Range(row & ":" & row), "^.*(\[KA\])|(\[KIC\])|(\[KS\])|(\[NA\]).*$")
If match <> "" Then
Call CopyRow(row)
End If
Next row
答案 0 :(得分:3)
使用.Cells(.Rows.Count, "A").End(xlUp).Row
将返回在特定列中使用的最后一行,不一定是使用任何单元格的最后一行。
另一种方法是使用Sheet.UsedRange
,但您必须了解某些限制。
.UsedRange
返回一个包含所有已使用单元格的矩形区域,因此它可能不会锚定在单元格A1
上。要获取范围底部的行号,请使用
.UsedRange.Row + .UsedRange.Rows.Count - 1
删除行(或列).UsedRange
时可能无法更新,因此您可能会获得大于真实使用范围的范围。
您可以强制更新:如果您愿意使用ActiveSheet
,那么就行了
Application.ActiveSheet.UsedRange
代码中的强制更新。
如果您不想使用ActiveSheet
(例如在例程中将工作表作为参数传递),请使用:
i = Sh.UsedRange.Row
此时不要依赖i
的值。对.UsedRange
的下一个引用将是真正使用的范围。