Excel VBA如何查找过滤工作表的ActiveCell计数

我有一个可过滤的联系人数据库和用户窗体。 我想要的是在用户窗体上的2个计数器。 lblSelection应该给出数据集的总量。 而lblCount应该在整个数据集内给出所选单元格的位置。

就像“你在第45集中的300”

现在,当数据库被过滤时,它应该读取例如“你在第67组中”,只使用可见单元格并计算在该范围内所选单元格的位置。

这是我迄今使用的简单代码:

Public Sub CountReset() 'Display Count If ActiveSheet.FilterMode = False Then Me.lblCount = activecell.Row - 1 Me.lblSelection = activecell.Offset(-1, 0).End(xlDown).Row - 1 Else Me.lblCount = ???? Me.lblSelection = Base.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1 End If End Sub 

感谢您的帮助!

我想你会需要一个像这样的循环:

 Public Sub CountReset() Dim n As Long Dim rCell As Range 'Display Count If ActiveSheet.FilterMode = False Then Me.lblCount = ActiveCell.Row - 1 Me.lblSelection = ActiveCell.Offset(-1, 0).End(xlDown).Row - 1 Else n = -1 With Base.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible) For Each rCell In .Cells n = n + 1 If rCell.Row = ActiveCell.Row Then Exit For Next Me.lblCount = n Me.lblSelection = .Cells.Count - 1 End With End If End Sub 

你几乎得到它。

 Public Sub CountReset() Me.lblCount = activecell.Row - 1 ' this will be the same if it's filtered or not If ActiveSheet.FilterMode = False Then Me.lblSelection = activecell.Offset(-1, 0).End(xlDown).Row - 1 Else 'assuming base is a defined table or named range ... also no need to filter it because it's already filtered Me.lblSelection = Base.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1 End If End Sub