如果我在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/