如果范围是由地址指定的,我可以遍历一个单元格的范围以分别对每个单元格进行操作:
Dim cell as Range
For Each cell In Range("A1:A10")
debug.print cell.Address
Next cell
产生预期的输出:
$A$1
$A$2
... etc
但是当我从范围的Columns
集合中指定一列时,迭代只对整个列运行一次:
For Each cell In UsedRange.Columns(1)
Debug.Print cell.Address
Next cell
仅产生一个输出,整个列:
$A$1:$A$20
UsedRange.Columns(1)
不是Range
对象吗?如果没有,那是什么?
我已经阅读了this discussion of Rows/Columns as ranges和this on Range vs Range.Cells,但是我仍然可以解决如何遍历UsedRange.Columns(1)
中的每个单元格。
答案 0 :(得分:3)
那是因为Column
本身就是一个不同的对象。如果循环遍历列,则一次循环一列。要遍历列中的单元格:
Dim cell as Range
For Each cell In UsedRange.Columns(1).Cells
debug.print cell.Address
Next cell