我试图用一些像这样的代码,它的失败:什么数据类型是Excel VBA中的范围?
data = Range("A1")
MsgBox data.Offset(1,1)
这似乎是它应打印单元格B2的价值,而是它给了我一个错误(Run-time error 424: Object required.
)。
那么表达式Range("A1")
返回什么数据类型,以及如何声明data
为正确的数据类型来存储它?
我试图用一些像这样的代码,它的失败:什么数据类型是Excel VBA中的范围?
data = Range("A1")
MsgBox data.Offset(1,1)
这似乎是它应打印单元格B2的价值,而是它给了我一个错误(Run-time error 424: Object required.
)。
那么表达式Range("A1")
返回什么数据类型,以及如何声明data
为正确的数据类型来存储它?
Range
是一个对象。
这意味着你需要使用set
分配一个对象引用:
Dim data As Range
Set data = Range("A1")
设置关键字:在VBA,Set关键字是必要的一个对象和分配的分配区分 对象的默认属性 。
为一系列的数据类型,令人惊讶的是,Range
:-)
如果曾经得到所需要的对象的消息,那么你几乎肯定需要使用set
:
set data = Range("a1")
这是大多数人遇到的经典“疑难杂症”。完整的代码片段是:
Dim data As Range
Set data = Range("a1")
难道是公平地说,有两个运营商的位置:' = '这台''取值为'默认属性,和'设置 = '其中''等于''? –
Joe
2012-03-21 23:27:10
这很公平,只是'Set'没有将'x'设置为'y',而是创建了对'y'的引用。我还应该提到,为了在代码结束时进行清理,应该使用'Set data = Nothing'来减少引用计数并允许它被垃圾收集。 – bernie 2012-03-21 23:30:04
所以'Set'会导致'x'的值成为'y'的指针? – Joe 2012-03-21 23:33:46