当所有行的表被隐藏时如何获得RowCount?

我通过使用下面的代码行排除顶部两行,因为它们是头部隐藏行。

For i=3 To ThisWorkBook.Sheets("ALL").Range("A1",ThisWorkBook.Sheets("ALL").Range("A65536").End(xlUp)).Rows.Count ThisWorkBook.Sheets("ALL").Rows(i).EntireRow.Hidden=True Next 

现在要获得隐藏的行数,我正在使用下面的代码行

 From i=3 To ThisWorkBook.Sheets("ALL").Range("A1",ThisWorkBook.Sheets("ALL").Range("A65536").End(xlUp)).Rows.Count ThisWorkbook.Sheets("ALL").EntireRow.Hidden=False Next 

但我得到rowcount为2.事实上,该表有10行。 那么如何让隐藏的行可见?

如果我正确地理解了你的问题,这是一个解决你的问题的替代方法,它会给你一些运行速度更快的代码,并且是一个相当干净的pipe理:

 Option Explicit Sub CountHiddenRows() Dim wks As Worksheet Set wks = ThisWorkbook.Sheets("ALL") With wks Dim lngLastRow As Long lngLastRow = .Range("A" & .Rows.Count).End(xlUp).Row .Range("A3:A" * lngLastRow).EntireRow.Hidden = True Dim rngConsider As Range Dim lngHiddenRows As Long, lngRows As Long, lngVisibleRows As Long Set rngConsider = .Range("A1:A" & lngLastRow) lngRows = rngConsider.Rows.Count lngVisibleRows = rngConsider.SpecialCells(xlCellTypeVisible).Rows.Count lngHiddenRows = lngRows - lngVisibleRows MsgBox "There are " & lngHiddenRows & " hidden rows." End With End Sub 

Worksheet.Rows.Count总是返回Worksheet.Rows.Count的总行数。
在这里,我会使用Worksheet.UsedRange.Rows.Count
此外,当最后一行的第一个单元格为空时,您的代码有可能失败。
这是一个小函数,用于统计第2行和最后一个使用行之间的可见行数。

 Function CountVisibleRows() As Integer Dim R As Integer For R = 2 To UsedRange.Rows.Count If Not Rows(R).Hidden Then CountVisibleRows = CountVisibleRows + 1 Next R End Function 

当行数很less时,我通常使用一个循环,因为我有更好的控制,而且速度更快。
当我处理数千行时,要求Excel使用SpecialCells或其他函数的速度更快。