【问题标题】:VBA Object for Status Bar Metrics状态栏指标的 VBA 对象
【发布时间】:2019-03-01 17:35:39
【问题描述】:

我正在尝试返回显示在 Excel 窗口底部的 Excel 状态栏中的过滤行数。当我过滤范围时,屏幕底部会显示“76 of 4008”。

如何拨打这些号码?

我的想法是“为什么 Excel 已经进行了重新计算?”

最后,我想要一个宏进行过滤,将可见行数保存在变量中,进行不同的过滤,将可见行数保存在变量中,然后显示一个返回两个行数的消息框。我已经编写了所有其他内容,但找不到存储 Excel 状态栏指标(计数、总和、平均值等)的对象。

感谢您的帮助。

【问题讨论】:

  • 我只能使用这个删除可见行:` lr = Cells(Rows.Count, 1).End(xlUp).Row` ` If lr > 1 Then` Range("A2:A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Delete @987654322 @所以,我尝试以这种方式重新工作:
  • 你为什么不直接使用.Range("A1", .cells(.rows.count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Rows.Count?如果你这样做,你会得到行数
  • 当我这样做时,lr = Cells(Rows.Count, 1).End(xlUp).Row If lr > 1 Then RowCount = Range("A2:A" & lr).SpecialCells(xlCellTypeVisible).Rows.Count End If 它每次都返回 1,尽管在 Excel 状态栏中显示 30093 中的 780 个

标签: excel vba count statusbar


【解决方案1】:

您需要从标题后的下一行开始计数,因此如果您的标题在 A1 中并且 A 列中的所有单元格都已填满,您可以这样做:

Sub VisibleRows()

    Dim RowsStore As Long

    With ThisWorkbook.Sheets(1)
         RowsStore = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeVisible).Rows.Count
    End With

End Sub

【讨论】:

  • 如果您想保留多个计数并且始终过滤同一列,您可以使用数组来存储结果并使用循环来遍历过滤器的条件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
相关资源
最近更新 更多