分享

最小的对象:单元格

 L罗乐 2017-04-20

在VBA里,多个单元格的合集我们统称为Range。Range对象可以包括1到多个单元格,如果只有一个单元格,也可以用cell对象来表示。所以说,cell也是一个特殊的range,可以应用Range的方法。
按照之前面向对象型的方法,我们从两个方面来研究Range对象,先从Range对象的常用属性开始。


Range的引用

所谓引用,大抵可以理解为Range类的一个实例化,也就是上回中说的,给人起名字的过程。实例化是面向对象型编程的重要一步,也是我们最先要掌握的。

引用Range的方式,常见有以下几种:

cells语句

cells用来获得指定行和列的单元格对象,也就是range对象。

主要的用法为 cells(行号,列号),如cells(1,1)可以得到A1单元格。

直接使用range语句

如果想要指定某个区域,可以直接使用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属性

currentregion

用于选择某个单元格的当前区域。所谓当前区域就是与当前单元格相接的最大范围。

Range('a1').CurrentRegion.select

注意

  • currentregion是通过值来判断的,不同于usedrange。例如,即使有颜色填充,a1的currentregion仍然只是其本身。

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。

  • offset

将目标range在不改变尺寸的情况下进行平移,向各个方向的位移由括号内的参数决定。

Range('a1:b2,c3:d4').offset(1,1)


注意: vba里的offset只有两个参数,不同于函数中的offset有4个参数。

  • resize
    用于把目标区域重新调整大小,得到新的range。括号内的参数为调整后的行数和列数

    Range('a1:b2').Resize(3, 4)

    这是Excel自带函数中offset的后两个参数。应当注意,range一定要是一个连续的区域。如下这种区域的resize会报错

    Range('a1:b2,c3:d4').Resize(2, 2)

总结一下

  • range的引用

  • range的常用属性

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多