Excel VBA中的范围是什么数据类型?

Excel VBA中的范围是什么数据类型?,excel,vba,Excel,Vba,我尝试使用一些类似的代码,但失败了: data = Range("A1") MsgBox data.Offset(1,1) 这似乎应该打印单元格B2的值,但它却给了我一个错误(运行时错误424:Object required.) 那么表达式Range(“A1”)返回什么样的数据类型,我如何声明数据为正确的数据类型来存储它呢?Range是一个对象。 这意味着您需要使用set来指定对象引用: Dim data As Range Set data = Range("A1") : Set关键字:在V

我尝试使用一些类似的代码,但失败了:

data = Range("A1")
MsgBox data.Offset(1,1)
这似乎应该打印单元格B2的值,但它却给了我一个错误(
运行时错误424:Object required.


那么表达式
Range(“A1”)
返回什么样的数据类型,我如何声明
数据
为正确的数据类型来存储它呢?

Range
是一个对象。
这意味着您需要使用
set
来指定对象引用:

Dim data As Range
Set data = Range("A1")
:

Set关键字:在VBA中,Set关键字是区分 在对象赋值和默认属性赋值之间 物体的形状


令人惊讶的是,范围的数据类型是,
range
:-)

如果您收到需要对象的消息,那么您几乎肯定需要使用
set

set data = Range("a1")
这是大多数人遇到的一个经典的“抓住你了”。完整的代码片段是:

Dim data As Range
Set data = Range("a1")

公平地说,这里有两个运算符:
=
,它将
的默认属性设置为
的值,和
Set=
哪个设置
等于
?这是公平的,除了
Set
没有设置
x
等于
y
,因为它创建了对
y
的引用。我还应该提到,为了在代码末尾进行清理,您应该
设置data=Nothing
以减少引用计数并允许对其进行垃圾收集。是的,这是另一种方式。