为什么 For Each over Range.Columns(1) 不迭代单元格?



如果范围由地址指定,我可以遍历一系列单元格以单独对每个单元格进行操作:

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对象吗?如果不是,那是什么??

我已经阅读了关于行/列作为范围的讨论,以及关于范围与范围.单元格的讨论,但我仍然可以弄清楚如何在UsedRange.Columns(1)中迭代每个单元格。

这是因为Column本身就是一个不同的对象。 如果循环访问列,则一次循环一列。 循环访问列中的单元格

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

最新更新