在我开始之前,我想说我意识到你不应该依赖默认属性而我不会,但这很奇怪.我一直都读到这value是RangeObject 的默认属性,因此为什么会这样:
Range("A1") = 2
但是,此页面声称这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
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
请注意,Range("A1") 的结果与 Range("A1").Value 和 Range("A1").Value2 相同