总行数

如何确定工作表中使用的行的总数?

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 

使用.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的下一个引用将是真正的使用范围。