在过滤后的工作表中每行打印多个单元格值

时间:2014-04-10 09:09:15

标签: excel vba excel-vba

我有以下循环遍历已过滤的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列中的相应值?

1 个答案:

答案 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 NextIf Not rng Is Nothing Then的原因。

至于原始问题,您可以使用Debug.Print cl.Offset(, 1)从B列获取值(假设cl指的是A列中的单元格)。或者替代方式,更明确:Debug.Print Range("B" & cl.Row)