繁体   English   中英

隐藏工作表的所有行时如何获取RowCount?

[英]How to get the RowCount when all Rows of Sheet are hidden?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM