第十节:再谈range对象

在第七节中,我给大家简单结束了一下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”)就是指下面的区域。

如果我们要引用多个区域,可以用逗号隔开,比如这样,range( “A1:B4,C5:D8” ).select,运行效果如下

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

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

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

同理,因为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 (若为负数,则方向相反)

2.resise

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

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

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

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

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

效果和上面是一样的

3.CurrentRegion

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

比如range(“A2”).CurrentRegion.select

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

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

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

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

我们可以使用Activesheet的usedrange属性

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

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

比如:Activesheet.usedrange.select

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

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

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单元格

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

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

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

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

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

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

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

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

如果我们要指定移动位置,可以通过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的内容都在这里了,内容较多,大家好好练习,我们下节再见。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容