在VBA里,多个单元格的合集我们统称为Range。Range对象可以包括1到多个单元格,如果只有一个单元格,也可以用cell对象来表示。所以说,cell也是一个特殊的range,可以应用Range的方法。
按照之前面向对象型的方法,我们从两个方面来研究Range对象,先从Range对象的常用属性开始。
所谓引用,大抵可以理解为Range类的一个实例化,也就是上回中说的,给人起名字的过程。实例化是面向对象型编程的重要一步,也是我们最先要掌握的。
引用Range的方式,常见有以下几种:
cells用来获得指定行和列的单元格对象,也就是range对象。
主要的用法为 cells(行号,列号),如cells(1,1)可以得到A1单元格。
如果想要指定某个区域,可以直接使用range语句来引用。
表达单个区域
Range('a1:d5')'或者也可以Range('a1', 'd5')
表达多个区域
Range('a1:b2, c4:d5')
但注意,这种情况下不可以写成:
Range('a1:b2', 'c4:d5')
以上这种写法会直接选中a1到d5!!!
表达多行和多列
Range('1:3')Range('a:d')
如果表达想选中单行和单列,则使用
Range('1:1')Range('a:a')
即可。
同时表达多行也多列
Range('1:4,A:C').Select
下面介绍以下常用的range属性
用于选择某个单元格的当前区域。所谓当前区域就是与当前单元格相接的最大范围。
Range('a1').CurrentRegion.select
注意
currentregion是通过值来判断的,不同于usedrange。例如,即使有颜色填充,a1的currentregion仍然只是其本身。
用于表达range中的行和列。一般结合count方法使用,后续会详细讲解。
表示range的值,非常常用。
用于表达range在指定方向上的最边缘的单元格,相当于选中该单元格后按ctrl 加 各个方向的箭头。方向参数有四个,分别为xlup,xldown,xltoleft和xltoright,代表上下左右。常用的方法如下:
Range('a65536').End(xlUp).Row '获取最后一行的行数Range('iv1').End(xlToLeft).Column'获取最后一列的列数
上面这种写法,几乎要成为约定俗成了,但是,由于07版以后的excel的行数已经突破了65536行的限制,这时候怎么办?
更新的方法如下:
ActiveSheet.UsedRange.Rows.Count'或者Cells(Rows.Count, 1).End(xlUp).Rowrows.count '可以得到当前单元格最后一行,正如之前说的65536
对已有range合理地进行位移和调整维度,而得到的新range。
offset
将目标range在不改变尺寸的情况下进行平移,向各个方向的位移由括号内的参数决定。
Range('a1:b2,c3:d4').offset(1,1)
resize
用于把目标区域重新调整大小,得到新的range。括号内的参数为调整后的行数和列数
Range('a1:b2').Resize(3, 4)
这是Excel自带函数中offset的后两个参数。应当注意,range一定要是一个连续的区域。如下这种区域的resize会报错
Range('a1:b2,c3:d4').Resize(2, 2)
range的引用
range的常用属性
联系客服