gpt4 book ai didi

vba - "Value"实际上是 Range 对象的默认属性吗?

转载 作者:行者123 更新时间:2023-12-04 11:49:59 26 4
gpt4 key购买 nike

在我开始之前,我想说我意识到你永远不应该依赖默认属性,我不会,但这很奇怪。我一直读到 valueRange 的默认属性对象,因此为什么会这样:

Range("A1") = 2

但是, this页面声称 itemRange 的默认属性.

此外,我制作的这个 sub 会建议 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 并且是隐藏的。当您在对象浏览器中启用“显示隐藏的成员”功能时,您可以看到它:

VBA Object Browser

它具有与 .Item 属性完全相同的签名,因此其中一个可以说是另一个的别名。(*)

无论如何,Range 也实现了集合接口(interface)。因此,它可以在 For Each 循环中使用——当你这样做时,循环将在每次迭代时调用 .Item 并将当前项分配给循环变量。

当在枚举之外使用时,例如与 Debug.Print 一起使用时,将使用 .Value,但我无法真正解释为什么。也许其他人可以提出一个提示。(*)

(*) 作为注释中的@GSerg points out_Default()_Item() 并不完全相等。

关于vba - "Value"实际上是 Range 对象的默认属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32996772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com