总行数

时间:2011-11-13 03:37:16

标签: excel vba excel-vba

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

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

1 个答案:

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