Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2412|回复: 8

[已解决]对于对象变量的问题

[复制链接]
发表于 2014-1-10 09:45 | 显示全部楼层 |阅读模式
Sub c()
Dim rng As Range
  Set rng = Range("A1:B2")
Range("A4:B5") = rng
End Sub

Sub c2()
Dim rng
  rng = Range("A1:B2")
   Range("A4:B5") = rng
End Sub
第一个代码不能将变量rng中的数据赋值给 Range("A4:B5") ,而第二个代码能。这是为什么?
最佳答案
2014-1-10 15:53
雄鹰2013 发表于 2014-1-10 11:41
为什么对象不能赋值给区域呢?

你的要求相当于问为啥不能让 1支铅笔+ 1张桌子 = 2 呢?

解释:
铅笔和桌子不是一样的东西,所以不能直接相加。

但可以改为:
1支铅笔.物品数量+ 1张桌子.物品数量 = 2.物品数量

结论:只有相同属性的东西才可以操作。


Range 是对象、和Range.value 单元格区域的值 不是一个属性,不能直接操作。





发表于 2014-1-10 09:52 | 显示全部楼层
第一段代码加SET 是一个对象。。将一个对象赋给一个区域。。不加SET  是一个数组。将数组赋值与一个区域。
回复

使用道具 举报

发表于 2014-1-10 09:54 | 显示全部楼层
第一段
Range("A4:B5").Value = rng.Value


点评

这位好像是EH版主。。。  发表于 2014-1-10 10:19
回复

使用道具 举报

 楼主| 发表于 2014-1-10 11:41 | 显示全部楼层
顺⑦.zì繎。 发表于 2014-1-10 09:52
第一段代码加SET 是一个对象。。将一个对象赋给一个区域。。不加SET  是一个数组。将数组赋值与一个区域。

为什么对象不能赋值给区域呢?
回复

使用道具 举报

发表于 2014-1-10 15:53 | 显示全部楼层    本楼为最佳答案   
雄鹰2013 发表于 2014-1-10 11:41
为什么对象不能赋值给区域呢?

你的要求相当于问为啥不能让 1支铅笔+ 1张桌子 = 2 呢?

解释:
铅笔和桌子不是一样的东西,所以不能直接相加。

但可以改为:
1支铅笔.物品数量+ 1张桌子.物品数量 = 2.物品数量

结论:只有相同属性的东西才可以操作。


Range 是对象、和Range.value 单元格区域的值 不是一个属性,不能直接操作。





回复

使用道具 举报

 楼主| 发表于 2014-1-10 16:29 | 显示全部楼层
香川群子 发表于 2014-1-10 15:53
你的要求相当于问为啥不能让 1支铅笔+ 1张桌子 = 2 呢?

解释:

对于基础的概念,我一直不是很懂,看了你的解释很形象。
回复

使用道具 举报

发表于 2014-1-10 16:50 | 显示全部楼层

Sub c()
    Dim rng As Range

    '1)准备工作:先存些不同的值,仅为赋值后查看效果
    For Each rng In [a1:b6]
        rng = rng.Address(0, 0)
    Next

    '2)单元格对象变量rng引用的区域是Range("A1:B2")
    Set rng = Range("A1:B2")
    Stop

    '3)给属性赋值,赋值句右边都是Rng.Text,即 Null
    Let Range("A4") = rng    '成功赋值,A4为空
    Let Range("A4:B5") = rng    '成功赋值,A4:B5为空

End Sub



我不知道这么理解对吗?来学习的
没有报错的原因是,当单元格对象的属性Text 赋值给某个属性时,没错误。
回复

使用道具 举报

发表于 2014-1-10 16:52 | 显示全部楼层
雄鹰2013 发表于 2014-1-10 16:29
对于基础的概念,我一直不是很懂,看了你的解释很形象。

呵呵,本来想骂你一声笨蛋……然后飘过的。


但是看你提问很真诚,不是在开玩笑……于是就给你认真答复了。

祝新年快乐!
回复

使用道具 举报

发表于 2014-1-10 17:04 | 显示全部楼层
香川群子 发表于 2014-1-10 15:53
你的要求相当于问为啥不能让 1支铅笔+ 1张桌子 = 2 呢?

解释:

群子老师又来了呵!

既然不能,那就该报错才对。
为什么c()没因为5楼的两个“不能”解释而报错ne ?


Range("A4:B5") = rng
对于这句这里的含义,感觉解答里还是没全部说清楚。
我也不知道7楼对不对,只是自己这么想的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 03:30 , Processed in 0.863418 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表