|
' 吕布,2012-01-19
Sub RangVsCellsDemo()
Dim r
' 1. 先看 Range 和 Cells 的定义
' A. Range 的定义为 Class Range,表示 Range 是一个类,可以根据其所带的参数构造一个Range 对象
' B. Cells 的定义为 Property Cells As Range,表示 Cells 是一个属性,返回一个 Range 对象,具体应
' 用于不同对象时返回对象不同(帮助时说的明白)
' 2. Cells主要作用在于他可以简洁的返回一个Range对象,而使用Range的构造方法相对代码比较长
' 比如在2003里,单个的Cells就相当于Range("1:65536"),显然,用前者更简洁明了,顺便提一下,Cells后带
' 括号的用法应是 Range 对象 Item 属性的用法,因为 Item 属性是 Range 对象的默认属性,Item省略写
' 出来罢了
Range("1:65536")(2, 3).Select ' 选取C2单元格
Range("1:65536")(2, "d").Select ' 选取D2单元格
Range("1:65536")(256 + 5).Select ' 选取E2单元格
Cells(2, 3).Select ' 选取C2单元格
Cells(2, "d").Select ' 选取D2单元格
Cells(256 + 5).Select ' 选取E2单元格
' 3. Cells 为属性,所以,只有定义了该属性的特定对象才能使用,并且返回特定的 Range 对象,总的来讲是返
' 回对象的全部单元格,特别注意,这里所讲的全部并不是我们肉眼所看到的,对于有的联合区域,返回的单元格
' 与想象的有点差别,比如 Range("A1:C5,B26").Cells.Count 返回值是30,而我们肉眼看到 A1:C5 和 B26
' 两片区域的单元格个数只有22个
Set r = Cells ' 应用于 Application 对象,Application 省略
Set r = Application.Cells ' 应用于 Application 对象
Set r = Worksheets(1).Cells ' 应用于 Worksheet 对象
Set r = Range("A1:C5,B26").Cells ' 应用于 Range 对象,这个就我个人而言,找不出很好的应用
' 4. Range为类类型,可以通过不同的方法构造Range对象
' a. 用区域名称, 用 A1 样式引用的宏语言
Set r = Range("A1:B2") ' 区域操作符(冒号)
Set r = Range("A1:C5 B2:D6") ' 相交区域操作符(空格)
Set r = Range("A1:C5,B2:D6") ' 合并区域操作符(逗号)
' Set r = Range("UserRng") ' 自定义名称,要先建立自定义名称UserRng
' b. 区域左上角和右下角的单元格
Set r = Range(Range("A1"), Range("IV65536"))
End Sub
上清宫主
理论性的东西了解少,以下仅为个人看法:
cells表示单个单元格,格式有cells(行号,列号)、cells(行号,列标)和cells(序号),这里的行号、列号、列标、序号都是相对而言的。对于相对,可以试行动以下代码看结果:cells(2,4).select、cells(2,"d").select、cells(16388).select(在07及以后版本)都是选择d2单元格;而Range("b3:h10").Cells(2, 4).Select、Range("b3:h10").Cells(2, "d").Select、Range("b3:h10").Cells(11).Select都是选中的是Range("b3:h10")区域的第二行第四列即e4单元格。
由于cells的参数可以为行号列号,这些都是整数,在代码中就非常好控制,这就为循环中使用提供了便利。不足是表示区域则不成了。
range则不同了,它表示起区域来非常方便。它表示单个单元格时为range(列标行号),如range("b4");在表示多个单元格时Range("b3:h10,a9,12:15") 就将b3至h10的区域、a9单元格、第12至15行全部表示出来了,而 Range("b3:h10 D:F")则将b3至h10的区域与d至f列交叉的部份表示出来。与前面雷同的是Range("b3:h10").Range("A1")表示了b3单元格
由于range的参数为列标行号,列标为字母,所以要对不同列循环时表示起来没整数方便,所以在循环中用range表示单元格要稍难些,一般就采用cells的方法了
|
|