我有以下循环遍历已过滤的Excel工作表
Sub SpecialLoop()
Dim rng As Range
Set rng = Range("A2:A11")
For Each cl In rng.SpecialCells(xlCellTypeVisible)
Debug.Print cl
Next cl
End Sub
因此,这会打印从A2到A11的所有值。如何在循环中打印B列中的相应值?
答案 0 :(得分:1)
这样的事情:
Sub SpecialLoop()
Dim rng As Range, cl As Range
On Error Resume Next
Set rng = Range("A2:A11").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not rng Is Nothing Then
For Each cl In rng
Debug.Print cl ' col A
Debug.Print cl.Offset(, 1) ' col B
'alternative way
'Debug.Print Range("B" & cl.Row) ' col B
Next cl
End If
End Sub
如果没有可见的单元格SpecialCells(xlCellTypeVisible)
触发错误,那就是我使用On Error Resume Next
和If Not rng Is Nothing Then
的原因。
至于原始问题,您可以使用Debug.Print cl.Offset(, 1)
从B列获取值(假设cl
指的是A列中的单元格)。或者替代方式,更明确:Debug.Print Range("B" & cl.Row)