找到下一个可见行

时间:2014-02-06 03:54:14

标签: excel excel-vba vba

我正在尝试编写一个函数来返回自动过滤列表中的下一个可见行。

在具有自动过滤范围的工作表中,以下代码返回#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版本时遇到了麻烦。

也许还有另一种方式。我想比较非连续(由于过滤)行之间的文本,但我不知道如何为公式提供对下一个可见行的引用。

1 个答案:

答案 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