在我开始之前,我想说我意识到你不应该依赖默认属性而我不会,但这很奇怪.我一直都读到这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)
Range该类的默认成员被调用_Default并被隐藏.在对象浏览器中启用"显示隐藏成员"功能后,您可以看到它:

它具有与(*).Item属性完全相同的签名,因此其中一个可以说是另一个的别名.
无论如何,Range还实现了集合接口.因此,它可以在For Each循环中使用 - 当你这样做时,循环将调用.Item每次迭代并将当前项分配给循环变量.
当在枚举之外使用时,例如with Debug.Print,.Value则会被使用,但我无法解释原因.也许其他人可以提出一个提示.(*)
(*)作为@GSerg 指出,在评论,_Default()而_Item()不是完全相等.
zed*_*xus -1
是的,看起来 Value 是 Range 的默认属性。
我在单元格 A1 中放入了一个非常大的数字。
Sub Test()
Debug.Print "Range default = " & Range("A1") & vbCrLf _
& "Range Text = " & Range("A1").Text & vbCrLf _
& "Range Value = " & Range("A1").Value & vbCrLf _
& "Range Value2 = " & Range("A1").Value2
End Sub
Results in
Range default = 3.24643541346456E+28
Range Text = 3.25E+28
Range Value = 3.24643541346456E+28
Range Value2 = 3.24643541346456E+28
Run Code Online (Sandbox Code Playgroud)
请注意,Range("A1") 的结果与 Range("A1").Value 和 Range("A1").Value2 相同
| 归档时间: |
|
| 查看次数: |
2035 次 |
| 最近记录: |