【问题标题】:How to get the RowCount when all Rows of Sheet are hidden?隐藏所有工作表行时如何获取行数?
【发布时间】:2013-01-03 10:01:45
【问题描述】:

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

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

【问题讨论】:

  • 等一下,你到底想在这里做什么?获取所有行、隐藏行或可见行的总数?
  • 最初我隐藏所有行,之后我将取消隐藏隐藏的行。我想现在很清楚了,感谢您的回复。
  • 工作表有 10 行是什么意思?

标签: vba excel hidden rowcount


【解决方案1】:

如果我正确理解了您的问题,这是解决您的问题的另一种方法,它将为您提供一些运行速度更快且易于管理的代码:

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

【讨论】:

    【解决方案2】:

    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 或其他函数会更快。

    【讨论】:

    • 感谢 Stenci 的回复。它对我有用。我是 VB 新手,所以请你给我一个关于 SpecialCells 的小例子,里面有不同类型的参数。再次感谢您。
    • 你想要什么类型的例子?我不真正使用 SpecialCells 的另一个原因是因为它们模拟了您使用 Excel 交互执行的操作,例如按 Ctrl+End 或 End 和 DownArrow。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多