Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 14188|回复: 15

[分享] Resize和Offset属性的理解

[复制链接]
发表于 2011-4-11 11:53 | 显示全部楼层 |阅读模式
本帖最后由 wbzxz 于 2011-4-11 12:05 编辑

一、Resize和Offset属性介绍

首先声明,这里讨论的Resize属性Offset属性都是属于Range对象的,通过以下格式进行引用:

Range.Offset(RowOffset, ColumnOffset)
Range.Resize(RowSize, ColumnSize)


Range对象的Offset属性和Resize属性主要作用是定位单元格的区域,可以与变量相结合,使用起来非常方便。通过这两天的学习与理解,我将通过几个实例来分析一下单个单元格、多个单元格使用Offset属性与Resize属性特点,以及Offset属性与Resize属性使用省略写法时的参数默认值的情况:


Range.Offset(RowOffset, ColumnOffset)
在下自不量力,翻译成中文,但表达肯定不准确,只是供大家理解而已,嘿嘿
单元格区域.偏移(行偏移量,列偏移量)
大概解释一下:指定的单元格区域,根据行偏移量和列偏移量进行整体平移,得到同样大小的单元格区域,但是地址可能发生了变化;
行偏移量,列偏移量的取值范围:负整数、零、正整数
行偏移量,列偏移量的默认值:




Range.Resize(RowSize, ColumnSize)
翻译成中文
单元格区域.重新确定区域(行数,列数)
大概解释一下:以指定单元格区域的左上角单元格为起点,根据行数和列数向右下方进行扩展,得到一个新的单元格区域,区域大小和地址都可能发生了变化。
行数、列数的取值范围:正整数
行数列数的默认值:指定单元格区域的当前行数、指定单元格区域的当前列数。(这个概念很重要)

以下为附件,代码在Sheet1工作表模块的test过程中,运行是请打开立即窗口,查看代码运行结果。
Resize和Offset.rar (9.65 KB, 下载次数: 126)

评分

参与人数 1 +12 收起 理由
raulerini + 12 辛苦了!加分!

查看全部评分

 楼主| 发表于 2011-4-11 11:57 | 显示全部楼层
本帖最后由 wbzxz 于 2011-4-11 12:05 编辑

二、Offset属性使用示例


Offset使用示例1:单个单元格情况

(1)行偏移量正整数:向下移;列偏移量正整数:向右移。
Range(“B2”).offset(1,1)
单元格向下移1行,向右移1列,得到单元格C3
(2)行偏移量负整数:向上移;列偏移量负整数:向左移。
Range(“B2”).offset(-1,-1)
单元格向上移1行,向左移1列,得到单元格A1
(3)行偏移量、列偏移量为零:原地踏步
Range(“B2”).offset(0,0)
单元格行列均不变化,得到单元格B2
Range(“B2”).offset(0,1)
单元格行无偏移、向右移1列,得到单元格C2
Range(“B2”).offset(1,0)
单元格向下移1行,列无偏移,得到单元B3
(4)行偏移量,列偏移量省略:默认零值
下面这几种情况是结果是一样的
行偏移量、列偏移量参数都省略:Range(“B2”).offset()
列偏移量参数省略:Range(“B2”).offset(0)
行偏移量参数省略:Range(“B2”).offset(,0)
这三种情况和Range(“B2”).offset(0,0)的结果是一样的,都是单元格行列均不变化,得到单元格B2。


Offset使用示例2:多个单元格情况
(1)Range("B2:C3").Offset(1, 1)
单元格”B2:C3”区域整体向下移1行,向右移1列,得到单元格区域”C3:D4”
(2)Range("B2:C3").Offset(-1, -1)
单元格”B2:C3”区域整体向上移1行,向左移1列,得到单元格区域”A1:B2”
(3)Range("B2:C3").Offset(0, 0)
单元格”B2:C3”区域整体原地踏步,得到单元格区域”B2:C3”
(4)Range("B2:C3").Offset(1, 0)
单元格”B2:C3”区域整体向下移1行,列无偏移,得到单元格区域”B3:C4”
(5)Range("B2:C3").Offset(0, 1)
单元格”B2:C3”区域整体行无偏移,向左移1列,得到单元格区域”C2:D3”
(6)以下省略参数情况等价与Range("B2:C3").Offset(0, 0)
Range("B2:C3").Offset(),Range("B2:C3").Offset(, 0), Range("B2:C3").Offset(0)


Offset使用示例3:整列情况
(1)Range("B2").EntireColumn.Offset(0, 1)
单元格区域”B列”整体右移1列,得到单元格”C列”
(2)Range("B2").EntireColumn.Offset(0, -1)
单元格区域”B列”整体右移1列,得到单元格”A列”
(3)以上两个例子可以采用省略写法
Range("B2").EntireColumn.Offset(, -1)
(4)注意下面这写法是错误的
Range("B2").EntireColumn.Offset(1, 1)
Range("B2").EntireColumn.Offset(-1, 1)
当单元格区域是整列时,行偏移量只能是0,或者省略,不能是正整数或负整数,切记


Offset使用示例4:整行情况
整行行情况与整列情况相似,我仅给出正确写法与错误写法,详细代码可以看附件
正确写法:
Range("B2").EntireRow.Offset(1, 0)
Range("B2").EntireRow.Offset(-1, 0)
Range("B2").EntireRow.Offset(1)
错误写法:
Range("B2").EntireRow.Offset(1, 1)
Range("B2").EntireRow.Offset(-1, 1)
当单元格区域是整行时,列偏移量只能是0,或者省略,不能是正整数或负整数,切记

评分

参与人数 1 +50 收起 理由
兰色幻想 + 50 总得的很不错啊

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-4-11 12:00 | 显示全部楼层
本帖最后由 wbzxz 于 2011-4-11 14:14 编辑

三、Resize属性使用示例

Resize使用示例

(1)但单元格和多单元格使用Resize属性
一般情况下,Resize属性不存在单单元格与多单元格的区别,无论区域大小,总是以单元格区域的左上角单元格为起点,根据行数和列数向右下方进行扩展,得到一个新的单元格区域;
Range("A1").Resize(1, 1)
Range("A1:B2").Resize(1, 1)
这两条语句效果是一样的,都以从”A1”单元格为开始(包含A1单元格),扩展1行,扩展1列,结果得到单元格区域都是A1


Range("A1").Resize(2, 2)
Range("A1:B2").Resize(2,2)
同样,这两条语句效果也是一样的,从”A1”单元格为开始(包含A1单元格),扩展2行,扩展2列,结果得到单元格区域都是A1:B2


(2)Resize参数省略的情况
当Resize内容参数省略的时候,单单元格与多单元格就出现了区别,当参数省略的时候,行数为当前单元格区域行数,列数为当前单元格区域列数,我个人感觉这个非常灵活,所以我经常出错;


Range("A1").Resize()
在上面这个语句中,单元格区域是A1,行数是1,列数是1,因为参数进行了省略,采用了默认值,那就是从”A1”单元格为开始(包含A1单元格),扩展1行,扩展1列,结果得到单元格区域是A1
其实把上面这条语句写完全,就是这样的Range("A1").Resize(1,1)


Range("A1:B2").Resize()
我们继续来分析这条语句,单元格区域是"A1:B2",是由两行两列组成的单元格,那么行数是2,列数是2,因为参数进行了省略,采用了默认值,那就是从”A1”单元格为开始(包含A1单元格),扩展2行,扩展2列,结果得到单元格区域是"A1:B2";
把这条语句写全,应该是Range("A1:B2").Resize(2,2)
还有实例可以看附件


(3)整列的情况
Range("A1").EntireColumn.Resize(, 3)
我们来分析上面的语句,单元格区域是”A列”,行数省略,代表了所有行,列数是3,那就是从”A1”单元格为开始(包含A1单元格),扩展所有行,扩展3列,结果得到单元格区域是"A:C";
注意,整列情况不能写行数,否则就无法扩展整列啦,切记;


(4)整行的情况
Range("A1").EntireRow.Resize(3)
我们来分析上面的语句,单元格区域是”第1行”,行数是3,列数省略,代表了所有列,就是从”A1”单元格为开始(包含A1单元格),扩展3行,扩展所有列,结果得到单元格区域是"1:3";
注意,整列情况不能写行数,否则就无法扩展整列啦,切记;


(5)错误的写法
Range("A1").Resize(0, 1)
Range("A1").Resize(-1, 1)
行数和列数都不能出项零值和负值,以上语句必然报错

回复

使用道具 举报

 楼主| 发表于 2011-4-11 12:08 | 显示全部楼层
各位老师和童鞋,大家在浏览过程中,如果发现什么不当之处,请帮我指出来,我及时进行修改。谢谢大家。
回复

使用道具 举报

发表于 2011-4-11 12:37 | 显示全部楼层
很好,很全面
回复

使用道具 举报

发表于 2011-4-11 12:57 | 显示全部楼层
辛苦了,学习学习!
回复

使用道具 举报

 楼主| 发表于 2011-4-11 14:15 | 显示全部楼层
谢谢兰版和花花的支持。

嘿嘿,总结的过程也是学习的过程,也备自己以后查询,呵呵。
回复

使用道具 举报

发表于 2012-9-4 10:26 | 显示全部楼层
支持一下, 正在找相关的资料,兰版出这个视频教学了吗?
回复

使用道具 举报

发表于 2013-7-23 13:10 | 显示全部楼层
学习,学习, 谢谢楼主
回复

使用道具 举报

发表于 2017-9-2 11:16 | 显示全部楼层
学习学习!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 07:57 , Processed in 0.355795 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表