如果我在Excel中设置了自动筛选器,并且想用VBA代码遍历一列中的所有可见数据,那么最简单的方法是什么?

不应包括所有已过滤掉的隐藏行,因此从上到下的简单范围无济于事。

有什么好主意吗?

最佳答案

假设我在A2:A11单元格中有1到10的数字,而我的自动过滤器在A1中。我现在过滤以仅显示大于5的数字(即6、7、8、9、10)。

此代码将只显示可见的单元格:

Sub SpecialLoop()
    Dim cl As Range, rng As Range

    Set rng = Range("A2:A11")

    For Each cl In rng
        If cl.EntireRow.Hidden = False Then //Use Hidden property to check if filtered or not
            Debug.Print cl
        End If
    Next

End Sub

也许使用SpecialCells有更好的方法,但是以上方法在Excel 2003中对我有用。

编辑

刚刚找到了更好的方法SpecialCells:
Sub SpecialLoop()
    Dim cl As Range, rng As Range

    Set rng = Range("A2:A11")

    For Each cl In rng.SpecialCells(xlCellTypeVisible)
        Debug.Print cl
    Next cl

End Sub

关于excel - 用VBA循环遍历过滤列表的最简单方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10849177/

10-14 18:13