gpt4 book ai didi

vba - 返回默认属性

转载 作者:行者123 更新时间:2023-12-02 10:24:37 25 4
gpt4 key购买 nike

我按如下方式填写A1A2:

enter image description here
然后我运行:

Sub WhatIsGoingOn()
Dim r As Range, sh As Worksheet

Set r = Range(Cells(1, 1))
Set sh = Sheets(Cells(2, 1))
End Sub

我预计在这两种情况下,VBA 将使用 Cells 的默认属性(Value)属性来设置每个变量。但是我在最后一行代码中收到运行时错误 13!

为了避免错误,我必须使用:

Sub WhatIsGoingOn2()
Dim r As Range, sh As Worksheet

Set r = Range(Cells(1, 1))
Set sh = Sheets(Cells(2, 1).Value)
End Sub

这是怎么回事?

最佳答案

区别在于 RangeSheets 对象的实现如何处理默认属性的输入。

RangeSheets 对象的默认属性采用 Variant 类型的参数。您可以将任何内容传递给它,因此不需要类型强制。在第一个示例中,您将 Range 对象传递给两者。

默认属性如何处理输入取决于它们自己。显然,Range 的属性尝试检索传递参数的默认值,在您的示例中,地址为字符串。 Sheets 对象似乎没有那么宽容,它会引发错误,因为您既没有传递数字也没有传递字符串。

不一致是 VBA 的优势之一...

顺便说一句,传递 CStr(Cells(2, 1)) 也可以,因为您在作为参数传递之前显式转换为 String。

关于vba - 返回默认属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37239743/

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