我知道Range()和Cells()属性是访问工作表上的单元格的等效方法.但是,何时使用Range.Cells()这种组合是明智的?
我遇到了他们使用过的一个例子Range("A1").Resize(2,3).cells.value.这相当于Range("A1").Resize(2,3).value?
如果没有,前者的优势是什么?
在我开始之前,我想说我意识到你不应该依赖默认属性而我不会,但这很奇怪.我一直都读到这value是RangeObject 的默认属性,因此为什么会这样:
Range("A1") = 2
Run Code Online (Sandbox Code Playgroud)
但是,此页面声称这item是默认属性Range.
此外,我做的这个子将建议这cells是默认属性:
Sub defaultprop()
Dim c As Variant
For Each c In Range("A1:A2")
Debug.Print c.value
Next c
For Each c In Range("A1:A2").value
Debug.Print c
Next c
End Sub
Run Code Online (Sandbox Code Playgroud) 如果范围是由地址指定的,我可以迭代一系列单元格以分别对每个单元格进行操作:
Dim cell as Range
For Each cell In Range("A1:A10")
debug.print cell.Address
Next cell
Run Code Online (Sandbox Code Playgroud)
产生预期的输出:
$A$1
$A$2
... etc
Run Code Online (Sandbox Code Playgroud)
但是,当我从范围集合中指定一列时Columns,迭代仅对整个列运行一次:
For Each cell In UsedRange.Columns(1)
Debug.Print cell.Address
Next cell
Run Code Online (Sandbox Code Playgroud)
仅产生一个输出,包含整列:
$A$1:$A$20
Run Code Online (Sandbox Code Playgroud)
不是UsedRange.Columns(1)一个Range物体吗?如果不是的话,那是什么??
我已经阅读了关于行/列作为范围的讨论以及Range vs Range.Cells 的讨论,但我仍然可以弄清楚如何迭代UsedRange.Columns(1).