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?