1

我通过使用以下代码行来隐藏行,不包括前两行,因为它们是标题。

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 行。那么如何使隐藏的行可见?

4

2 回答 2

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
于 2013-01-03T15:40:32.623 回答
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或其他功能会更快。

于 2013-01-04T03:25:37.713 回答