我通过使用以下代码行来隐藏行,只排除前两行,因为它们是标题。
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行。那么如何将隐藏行显示为可见?
答案 0 :(得分:0)
如果我正确地理解了您的问题,这里有一种替代方法来解决您的问题,这将为您提供一些运行速度更快且管理非常干净的代码:
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
答案 1 :(得分:0)
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
当行数很少时,我通常会使用一个循环,因为我有更好的控制,而且通常更快
当我处理数千行时,要求Excel使用SpecialCells
或其他函数会更快。