Excel精英培训网

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

Range.Cells 属性 和 Range.Item 属性,有区别吗?

[复制链接]
发表于 2013-7-12 12:08 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2013-7-13 11:07 编辑

'Range.Cells 属性
Sub test1()
    Dim Rng As Range

    '一个单元格
    Set Rng = Range("D6")
    Debug.Print Rng.Cells(-1).Address(0, 0)             '返回 D4
    Debug.Print Rng.Cells(0).Address(0, 0)              '返回 D5
    Debug.Print Rng.Cells(1).Address(0, 0)              '返回 D6
    Debug.Print Rng.Cells(-1, -1).Address(0, 0)         '返回 B4
    Debug.Print Rng.Cells(0, 0).Address(0, 0)           '返回 C5
    Debug.Print Rng.Cells(1, 1).Address(0, 0)           '返回 D6
    Debug.Print "------"
    '单元格区域
    Set Rng = Range("D6:F10")
    Debug.Print Rng.Cells(-1).Address(0, 0)             '返回 B6
    Debug.Print Rng.Cells(0).Address(0, 0)              '返回 C6
    Debug.Print Rng.Cells(1).Address(0, 0)              '返回 D6
    Debug.Print Rng.Cells(-1, -1).Address(0, 0)         '返回 B4
    Debug.Print Rng.Cells(0, 0).Address(0, 0)           '返回 C5
    Debug.Print Rng.Cells(1, 1).Address(0, 0)           '返回 D6

End Sub





'Range.Item 属性
Sub test2()
    Dim Rng As Range

    '一个单元格
    Set Rng = Range("D6")
    Debug.Print Rng.Item(-1).Address(0, 0)              '返回 D4
    Debug.Print Rng.Item(0).Address(0, 0)               '返回 D5
    Debug.Print Rng.Item(1).Address(0, 0)               '返回 D6
    Debug.Print Rng.Item(-1, -1).Address(0, 0)          '返回 B4
    Debug.Print Rng.Item(0, 0).Address(0, 0)            '返回 C5
    Debug.Print Rng.Item(1, 1).Address(0, 0)            '返回 D6
    Debug.Print "------"
    '单元格区域
    Set Rng = Range("D6:F10")
    Debug.Print Rng.Item(-1).Address(0, 0)              '返回 B6
    Debug.Print Rng.Item(0).Address(0, 0)               '返回 C6
    Debug.Print Rng.Item(1).Address(0, 0)               '返回 D6
    Debug.Print Rng.Item(-1, -1).Address(0, 0)          '返回 B4
    Debug.Print Rng.Item(0, 0).Address(0, 0)            '返回 C5
    Debug.Print Rng.Item(1, 1).Address(0, 0)            '返回 D6

End Sub





test1和test2,除颜色处不同,其它都一样。
因此,如题。谢谢!

发表于 2013-7-12 12:37 | 显示全部楼层
本帖最后由 E-H-P 于 2013-7-12 12:42 编辑

Item("D7:D8")
cells做不到
---区域与单位格---
回复

使用道具 举报

 楼主| 发表于 2013-7-12 16:08 | 显示全部楼层
E-H-P 发表于 2013-7-12 12:37
Item("D7:D8")
cells做不到
---区域与单位格---

谢谢ehp!


不知你说的哪种情况时,不一样。
回复

使用道具 举报

发表于 2013-7-13 10:38 | 显示全部楼层
1) Item属性是Range Object的默认属性,所以Rng.Item(-1).Address(0, 0) 也可以写成Rng(-1).Address(0, 0),结果一样

2) Item属性同时也是Cells属性的默认属性,所以Cells(1,1)也可以写成Cells.Item(1,1),结果一样

3) Range的Cells属性返回的是Range Object本身,在这里Cells属性如果不再有递延的其他属性的话,就显得累赘.因为Rng.Cells返回的就是Rng自己.

4) 根据以上2)和3)的推论得出: Rng.Cells(1,1)与Rng.Cells.Item(1,1)的写法完全是等同的效果

5) 根据以上3): Rng.Cells与Rng是一回事,所以Rng.Cells(0,0)与Rng(0,0)写法完全是一样的效果; 再根据1):Rng(0,0)也就是Rng.Item(0,0); 所以 Rng.Cells(0,0)与Rng.Item(0,0)效果完全一样

6) 那么Cells属性和Item属性到底哪里会不一样?我说,就是当后面没有Indexing数值的时候,你可以用Rng.Cells表示Rng,但不能用Rng.Item表示Rng.

你可以试试: Rng.Cells.Address返回Rng的地址,而 Rng.Item.Address会给你一个Compile Error


回复

使用道具 举报

 楼主| 发表于 2013-7-13 11:09 | 显示全部楼层
adders 发表于 2013-7-13 10:38
1) Item属性是Range Object的默认属性,所以Rng.Item(-1).Address(0, 0) 也可以写成Rng(-1).Address(0, 0),结 ...

谢谢adders!




Rng.Item.Address
没有这样的参数呀?!(也就没法接着测,是否等效)

点评

所以是compile error(编辑错误)嘛,因为只有Item而没有后面的Row Index的话根本就不被授受,而单独的Cells是可以的  发表于 2013-7-13 11:15
回复

使用道具 举报

 楼主| 发表于 2013-7-13 12:01 | 显示全部楼层
adders 发表于 2013-7-13 10:38
1) Item属性是Range Object的默认属性,所以Rng.Item(-1).Address(0, 0) 也可以写成Rng(-1).Address(0, 0),结 ...

你的意思是不是说:假设item属性不带参数RowIndex的话,和cells属性相比,就有区别。。。。。。
我觉着,首先这么假设就不合法,所以后面的结论也不合法。


从知识上说,这是区别。
cells属性的参数,都可省略
item属性的参数,不是都可省略


从实际应用来说,没区别。
好像没有不带参数的写法,即便有,也很多余啊。
如:Rng.Cells.Address 或 Rng.Item.Address

点评

好吧不要纠结于.Address了,本来不带参数的Rng.Cells写法确实是多余的,却是合法的(相对于Rng.Item是不合法而言).实际运用中以下4种写法没有区别:Rng(0,0); Rng.Cells(0,0); Rng.Item(0,0); Rng.Cells.Item(0,0)  发表于 2013-7-13 12:07
回复

使用道具 举报

 楼主| 发表于 2013-7-13 13:29 | 显示全部楼层
学习了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 10:59 , Processed in 0.300463 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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