为什么For Each over Range.Columns(1)不会遍历单元格?

时间:2019-05-04 15:03:13

标签: excel vba

如果范围是由地址指定的,我可以遍历一个单元格的范围以分别对每个单元格进行操作:

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 rangesthis on Range vs Range.Cells,但是我仍然可以解决如何遍历UsedRange.Columns(1)中的每个单元格。

1 个答案:

答案 0 :(得分:3)

那是因为Column本身就是一个不同的对象。如果循环遍历列,则一次循环一列。要遍历列中的单元格

Dim cell as Range
For Each cell In UsedRange.Columns(1).Cells
  debug.print cell.Address
Next cell