gpt4 book ai didi

vba - 什么时候应该使用 Set [例如用于 SpecialCells 返回值]?

转载 作者:行者123 更新时间:2023-12-04 21:13:00 25 4
gpt4 key购买 nike

恐怕我误解了 VBA for excel 的文档,我有这行似乎是一个错误:

Range a = Selection.SpecialCells(xlCellTypeConstants, 23)

但这一个很好:
Set a = Selection.SpecialCells(xlCellTypeConstants, 23)

文件声称:

Returns a Range object that represents all the cells that match the specified type and value.



但它实际上返回一个 byRef对象,这就是为什么我必须使用 Set .

我在这里想念什么?

这里是 Range.SpecialCells Excel中的方法帮助:

enter image description here

最佳答案

Range a = Selection.SpecialCells(xlCellTypeConstants, 23)

这不是有效的 VBA,无论数据类型如何。您不必像在 C# 中那样在变量名前声明变量类型,也不必像在 VB.NET 中那样在声明点初始化变量。
你可以做:
Dim a As Range
Set a = Selection.SpecialCells(xlCellTypeConstants, 23)
这会将对该范围的引用保存到 a .
你也可以这样做:
Dim a As Variant
a = Selection.SpecialCells(xlCellTypeConstants, 23)
这将保存在 a范围内单元格值的二维数组。

Returns a Range object that represents all the cells that match the specified type and value.

But it actually returns a byRef object and that is why I have to use Set.


VBA 中没有 byval 对象。所有对象都是byref,当你想复制一个对象的引用时,你总是使用 Set .您需要的原因 Set是默认属性。每个对象都可以有一个默认属性,当仅提供对象名称时请求该属性。这会产生歧义,因此您需要说 Set当您需要操作对象引用时,请省略 Set当你想要一个对象的默认属性时。 Range 的默认属性是 Value .

关于vba - 什么时候应该使用 Set [例如用于 SpecialCells 返回值]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17877536/

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