在VBA里,多个单元格的合集我们统称为Range。Range对象可以包括1到多个单元格,如果只有一个单元格,也可以用cell对象来表示。所以说,cell也是一个特殊的range,可以应用Range的方法。 Range的引用所谓引用,大抵可以理解为Range类的一个实例化,也就是上回中说的,给人起名字的过程。实例化是面向对象型编程的重要一步,也是我们最先要掌握的。 引用Range的方式,常见有以下几种: cells语句cells用来获得指定行和列的单元格对象,也就是range对象。 主要的用法为 cells(行号,列号),如cells(1,1)可以得到A1单元格。 直接使用range语句如果想要指定某个区域,可以直接使用range语句来引用。 引用单元格区域
Range('a1:b2, c4:d5') 但注意,这种情况下不可以写成: Range('a1:b2', 'c4:d5') 以上这种写法会直接选中a1到d5!!! 引用行和列
Range('1:1')
Range('a:a') 即可。
Range常用属性下面介绍以下常用的range属性 currentregion用于选择某个单元格的当前区域。所谓当前区域就是与当前单元格相接的最大范围。 Range('a1').CurrentRegion.select 注意
rows/columns用于表达range中的行和列。一般结合count方法使用,后续会详细讲解。 value表示range的值,非常常用。 end用于表达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).Row
rows.count '可以得到当前单元格最后一行,正如之前说的65536 offset/resize对已有range合理地进行位移和调整维度,而得到的新range。
将目标range在不改变尺寸的情况下进行平移,向各个方向的位移由括号内的参数决定。 Range('a1:b2,c3:d4').offset(1,1)
总结一下
|
|