我正在尝试编写一个函数来返回自动过滤列表中的下一个可见行。
在具有自动过滤范围的工作表中,以下代码返回#VALUE错误:
Function FindNextVisible(S As Range) As Range
Dim L As Range
Dim R As Range
Dim counter As Integer
counter = 1
Set L = Range(S, S.End(xlDown)).Cells.SpecialCells(xlCellTypeVisible)
For Each R In L
counter = counter + 1
If counter = 2 Then FindNextVisible = R
Next
End Function
我怀疑初学者错误......
更新1: 好的建议。我不能使用SpecialCells。不幸的是,VBA在我身上并不强大,我在使用Sub版本时遇到了麻烦。
也许还有另一种方式。我想比较非连续(由于过滤)行之间的文本,但我不知道如何为公式提供对下一个可见行的引用。
答案 0 :(得分:2)
以下内容应该可以满足您的需求。
Public Function NextVisibleCell(Range As Range) As Range
Application.Volatile
Dim i As Long
Set Range = Range.Cells(Range.Rows.Count, Range.Columns.Count)
For i = 1 To Rows.Count - Range.Row
If Not Range.Offset(i).EntireRow.Hidden Then
Set NextVisibleCell = Range.Offset(i)
Exit Function
End If
Next i
End Function