vba编程教程

第十节,再谈Range对象

2020-01-10  本文已影响0人  潮办公

在第七节中,我给大家简单结束了一下range对象,让大家知道了range拥有一个value属性,以及range可以用cells的行列的表示方法。因为range是整个Excel工作簿的基础构成,相对于人体的细胞。所以本节再次深入了解一下range对象。

一、range的多种引用方法

假设我们要引用A1单元格,除了可以用range(“A1″), cells(1,1),还有一种方法,就是把cells的第1列,改成第A列,也就是说cells(1,”A”)其实也是表示A1单元格

我们上节已经知道,如果要引用多个单元格,或者说合并单元格,可以使用“:”来连接,比如range(“A1:B4”)就是指下面的区域。

image

如果我们要引用多个区域,可以用逗号隔开,比如这样:

range( “A1:B4,C5:D8” ).select

运行效果如下

image

如果没有中间的逗号,那将代表多个区域的相交区域,比如: range( “A1:B4 B4:C7” ).select

image

cells还可以作为单个元素使用,如cells(1),代表第一个单元格,也就是A1单元格,cells(2)代表第二个单元格,也就是B1单元格。简称就是从左到右,从上到下依次排布下去。

cells还可以作为ranges的方法。比如range(“A2:B3”).cells(1,1)代表选中区域的第一行第一列元素,也就是A2单元格,比如 :

range(“A2:B3”).cells(1,1) .select
image

同理,因为cells可以单个元素使用,所以 range(“A2:B3”).cells(1,1) 和 range(“A2:B3”).cells(1) 其实是一样的,两者的区别就是一个是2×2矩阵,一个是4个数字构成的数组。

二、引用行和引用列

在vba中,行用rows表示,列用columns表示

若要引用第三行,可以

rows(“3:3”).select

或者

 rows(3).select

若要引用第三到第五行,可以使用

 rows(“3:5”).select

同样的,若要引用第三列,可以使用columns(3).select,或者 columns (“C:C”).select 注意,列是用字母表示的,如果要是用双引号表示列,记得用字母而不是数字。

若要引用第三到第五列,可以使用

columns (“C:E”).select

类似range的cells,rows和columns也可以作为他们自身的对象

比如

rows(“2:3”).row(1).select   # 代表从第二列开始的第一列,也就是选中第二列

比如

columns (“C:E”).columns(2).select  # 代表从C列开始的下一列,也就是第D列,或者说第四列。

三、range的其它属性

在上文我给大家简单的将了一下range的value属性,也就是单元格里面的值。除了value属性外,还有下面几个比较常用的range属性

1.offset

offset,是一个偏移函数,它offset(1,2)代表向下走一格,向右走两个格。

比如

range(“A1”).offset(1,2).select   #(若为负数,则方向相反)
image

2.resise

resize就是重新定义尺寸大小,可以用来扩大或者缩小选定区域。

比如

range("A1").resize(1,2).select

它会以A1单元格为基点,然后选中一行,两列的重叠位置。

image

若选定起始区域为合并单元格或者为一个表格区域,则以左上角的单元格为准

比如:

range(“A1:B3”).resize(1,2).select

效果和上面是一样的

3.CurrentRegion

CurrentRegion,英文翻译过来就是当前使用区域,利用这个属性,可以选择表格中当前已经使用过的区域。

比如

range(“A2”).CurrentRegion.select
image

咦?为啥没选中右边的数据呢?原因是因为,CurrentRegion只能识别连续的非空单元格,如果有空单元格,他就不会选中了。

那又有小伙伴会问了,为啥会选中第一列呢,不也是空的嘛?

这个是因为CurrentRegion是从A1单元格为起点,然后根据我输入的A2单元格的最下面的非空单元格,也就是C6单元格,构成的新区域。

image

那要是我想把整个工作表的使用单元格都选中呢?

我们可以使用Activesheet的usedrange属性

Activesheet,也就是活动工作表,注意,没有s,因为活动工作表只有一张。选中哪个就是哪个。

usedrange,故名思意,就是已使用的单元格。

比如:

Activesheet.usedrange.select
image

这样,他就会把已使用的行和列构成一个新区域。

注意,如果我在A10单元格,动了它的格式,比如把常规改成数值,运行上面那段代码也会选中它。因为我也使用了A10单元格,改了它的格式,只不过没有往里面填数字而已。

image

4.End

End属性是一个经常用的属性,它和CurrentRegion有点类似,是用来探测当前选中单元格周边区域边界的,它的区域起始点也是A1单元格

比如:

range("B2").End(xlup).select '选中上边界,边缘为B1单元格

比如:

range("B2").End(xldown).select '选中下边界 ,边缘为B5单元格

比如:

range("B2").End(xlToleft).select '选中左边界 ,边缘为A2单元格

比如:

range("B2").End(xlToright).select '选中右边界 ,边缘为C2单元格
image

若我们选中的是空单元格,其End的属性将返回最后一个空单元格边缘的非空单元格。(只有非空单元格和边线单元格可以作为边缘)

比如我们知道Excel工作表共有65536行,如果我们想在“刘三”下面填入“王五”

我们有两个方法,一是选中B2单元格,找到它的下边缘,然后向下偏移一个单元格

range("B2").End(xlDown).Offset(1,0).value="王五"

也可以选中B65536单元格,找到它的上边缘(同样它的边缘是B5),然后向下偏移一个

range("B65563").End(xlUp).Offset(1,0).value="王五"
image

5.count

除了使用end探测边缘,常用的还有count属性。

count可以计算单元格个数

比如

MsgBox (Range("A1:B20").Count) ‘答案是40

也可以用来计算行,列数量

Activesheet.UsedRange.Rows.count ’统计活动单元格已使用的行数

Activesheet.UsedRange.Columns.count ’统计活动单元格已使用的列数

四、range的常用方法

range的方法我们已经知道了select方法,也就是选中,出了select,还有下面几种方法

1.active

active和slect几乎没有区别,active还有激活的意思,所以也可以用来激活工作簿,工作表

2.copy

这个意思很简单,就是复制的意思。比如

range(“A1”).copy

3.cut

这个就是传说中的剪切了

4.delete

删除,一般要选择默认移动位置,默认是往左移动

image

如果我们要指定移动位置,可以通过shift:=xlup往上移动

比如

range(“A1”).delete shift:=xlup ’删除A1单元格,其它往上移动

range(“A1”).delete shift:=xlToleft ’删除A1单元格,其它往左移动

5.paste

paste就是粘贴了,一般和剪切,复制连着用。

复制——》选中——》粘贴

比如,复制A1单元格,选中A2,粘贴

Range("A1").Copy

Range("A2").Select

ActiveSheet.Paste '选中的区域粘贴进去

其实也可以直接省略选中这个,直接copy后粘贴,

Range("A1").Copy Range("A2") '直接粘贴的方法

6.clear

这个也用的比较多,用于清除格式

比如:

range("A1").clear ’用于清除A1单元格的所有格式、批注、内容等

range("A1").clearComments ’用于清除A1单元格的批注

range("A1").clearContents ’用于清除A1单元格的内容

range("A1").clearForamats '用于清除A1单元格的格式

基本range的内容都在这里了,内容较多,大家好好练习,我们下节再见。

上一篇下一篇

猜你喜欢

热点阅读