While answering a question I discovered that a For Each loop using Columns() will return the same range.
Take:
    Dim colrng As Range
    
    Set colrng = Columns(1)
    
    Dim rng As Range
    
    For Each rng In colrng
        Debug.Print rng.Address, colrng.Address
    Next rng
It will return Range("A:A") for the value rng.address
If you run this, using Range("A:A") rng will be "A1", "A2", ...  as expected.
    Dim colrng As Range
    
    Set colrng = Range("A:A")
    
    Dim rng As Range
    
    For Each rng In colrng
        Debug.Print rng.Address, colrng.Address
        If rng.Row = 5 Then 'No need to continue 
            Exit For
        End If
    Next rng
The same happens for Rows()
Anyone know what is happening behind the scenes here?