




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【VBA教材】16.单元格的表示法(一)作者:罗刚君文章来源:wps点击数: 601更新时间:2011-9-3- 大部分对象都有多种表示方法,其中最复杂的,应用最广的自然是单元格对象。 单元格的引用方式有多种,主要包括Range(a1)方式、cells(1,1)方式和a1方式、合集、偏移量、已用区域、当前区域、Resize 、End等等方式 本课时开始,利用多个课时对单元格的表示法进行讲解。 本课时讲述Range(a1)方式引用单元格。 用Range可以将文本型的单元格地址转化为单元格对象引用,类似于工作表函数“INDIRECT”。它可以引用单元格、区域、整行、整列及整个工作表。 16.1 引用单元格 Range引用单元格对象的方式为:单元格的列标加行号做为参数,且左右加入引号。例如: Range (A1)表示A1单元格 Range (C25)表示C25单元格 Range (Z65536)表示Z65536单元格, Range (A1)本身是代表一个单元格对象,但在“MsgBox Range(A1)”语句中则可以获取单元格的值。事实上“MsgBox Range(A1)”是“MsgBox Range(A1).value”的简写。 每个对象都有很多属性,同时也都有一个默认属性,而单元格的默认属性是“Value”,所以如果不明确指出属性时,那么一定是调用它的Value属性值。 Range参数中的引号必须是半角状态下输入,否则必将产生编译错误。另一个需要重点是VBA中Range(A1)方式引用对象时是不区分相对引用和绝对引用的,不管使用Range(A1)、Range($A1)、Range(A$1)还是Range($A$1)都引用同一单元格,而且在循环中也不产生任何影响。所以为了简化,通常只用Range(A1)这种形式来引用单元格。 16.2 引用区域 Range引用区域时是利用区域左上角单元格地址加冒号再加右下角单元格地址为其参数。不过参数也可以写成右下单元格地址加冒号再加左上角单元格地址,VBA会自动将其转换成左上角单元格地址加冒号再加右下角单元格地址的形式。 例如以下两种方式引用区域都可以得到相同结果: MsgBox Range(A2:D1).Address MsgBox Range(D1:A2).Address 以下是一些合法的区域引用: Range (A1:V10)代表从A1到V10的矩形区域,包括220个单元格 Range(F2:F10000)代表从F2到F10000的矩形区域,包括9999个单元格 Range(D2:Z10000)代表从D2到Z10000的矩形区域,包括229977个单元格 区域的默认属性也是Value,但是区域的Value是一个数组,包括多个对象,VBA中无法直接将其显示在屏幕上。如果利用Msgbox来显示这个属性值将得到一个运行时错误,例如图16.1: 图16.4 引用区域默认属性时产生运行时错误 正确的方式是逐个引用区域中单个值。通过索引号做参数来实现。例如: Range(D2:Z10)(1)代表D2:Z10区域中第一个单元格的Value,即D2 Range(D2:Z10)(3)代表D2:Z10区域中第三个单元格的Value,即F2 Range(D2:Z10)(24)代表D2:Z10区域中第24个单元格的Value,即D3 也就是说,索引号代表区域中从左到右、从上到下的序号,它是区域左上角单元格的参照进行相对引用。 如果索引号为小数时,VBA会自动对其进行四舍五入。如: MsgBox Range(D3:E7)(1.5).Address结果为“$E$3”,参数1.5当做2处理 MsgBox Range(D3:E7)(4.4).Address结果为“$E$4”,参数4.4当做4处理 事实上,索引号可以使用两个参数,第一参数表示行的索引,第二参数表示列的索引。那么参数“(4,5)”就可以引用区域中第4行第五列的单元格,它以区域左上角单元格为参照,而非工作表中A1单元格为参照。 例如以下的引用: MsgBox Range(D3:F7)(1, 3).Address结果为“$F$3”,表示D3:F7区域第一行第三列 MsgBox Range(D3:F7)(4, 2).Address结果为“$E$6”,表示D3:F7区域第四行第二列 MsgBox Range(D3:F7)(9, 4).Address结果为“$G$11”,即D3向下偏移九个单位,再向右偏移四个单位。虽然其行数与行数都已超过区有区域的大小,仍然可以正确的引用单元格 ET中区域的参数不可以使用0和负数,仅仅Excel中支持这种写法。 Range的参数也支持表达式,即字符或者数值运算结果。例如: Range(F & 3 + 2)表示引用F5单元格 Range(F & Range(D5).Value) Range(D & WorksheetFunction.Min(a:a) & :G5) 还可以使用变量做为参数,这在循环语句中极为有用。例如: Range(D & i)表示列标为D,行号为变量i的值的单元格引用。 16.3 引用多区域 如果在参数是使用多个区域的地址,且用半角逗号分隔,那么Range也可以引用多个区域。 例如以下引用方式: Range(D3,F7)表示D3和F7两个区域,包括了2个单元格 Range(D3:F4,G10)表示D3:F4和G10两个区域,包括7个单元格 Range(A1,B3:F4,Z1:Z2)表示A1、B3:F4和Z1:Z2三个区域,包括13个单元格 此方式引用单元格有一个限制:参数的长度不能超过256个字符,否则将会产生运行时错误。 16.4 引用整行、整列 利用“行号:行号”做为参数时可产生对整行的引用,同理利用“列标:列标”做为参数时可产生对整列的引用,如果两个行号或者列标不一致时,可以引用多行或者多列。 以下是一些合法的引用: Range(2:2)表示引用第二行 Range(2:10)表示引用第二到十行 Range(D:d)表示引用第D列,列标不区分大小写 Range(D:Z)表示引用从D列开始到Z列结束的区域 Range(D:A)表示引用A列到D列,顺序不一致时,VBA会自动转换成升序格式 参数中的冒号可以用半角也可以用全角,VBA会将其全角冒号转成半角冒号。但是引用却只能使用半角,否则将产生编译错误。 整行、整行引用对象除了Range法外,还可以用Rows和Columns来完成。其中ROWS引用行,以阿拉伯数字做为参数;Columns引用列,即可用阿拉伯数字做参数,也可用列标做参数。 Rows(2)表示引用第二行 Rows(2)同样表示引用第二行 Rows(2:2)仍然表示引用第二行 Rows(2:4)表示引用第二到四行 Columns(2)表示引用第二列,相当于Range(B:B) Columns(B)同样表示引用第二列 Columns(B:B)仍然表示引用第二列 Columns(B:D)表示引用B到D列 如果不带参数,那Rows代表整个工作表所有行,包括16777216个单元格。而Columns代表整个工作表所有列,仍然包括16777216个单元格。 16.5 Range嵌套使用 除以上的四种方法外,Range还支持利用单元格做为参数,其具体语法为: Range(Cell1, Cell2) 其中Cell1和Cell2是必选参数。Cells1用于指定目标区域的左上角单元格,Cell2用于指定目标区域右下角单元格。如果使用一个或者三个单元格将产生编译错误。 例如以下引用方式全是合法的区域引用: Range(Range(A1), Range(D2)表示引用A1:D2区域,包含8个单元格 Range(Range(A4), Range(A100)表示引用A1:A100区域,包含97个单元格 当然也有一些特殊的应用,当参数并非单个单元格,而是区域时,取两个区域所跨越的最大范围。例如: Range(Range(A1:A3), Range(D2)表示引用A1:D3区域,而非A1:D2。VBA会从两个区域中最左上角的单元格做为新的区域的参照起点,再取两个区域所跨越的最大行做为新的区域的行数,取两个区域跨越的最大列做为新区域的列数。 Range(Range(B2:A3), Range(A3:D10)表示引用A2:D10区域。 要理解这个算法,可以分别将B2:A3和A3:D10两段字符配对,然后从前两个字符中最最小值,再从后两对字符中取最大值,再加上冒号组合成一个新的区域地址。例如“B2:A3”和“A3:D10”,第一对字符B和A中取出最小值A,然后第二对字符2和3中取出最小值2,,再从第三对字符A与D中取出最大值D,最后从3和10中取最大值10,将这四个字符与冒号串连起来即为“A2:D10”。【VBA教材】17.单元格的表示法(二)作者:罗刚君文章来源:wps点击数: 1625更新时间:2011-11-4-本课时讲述Cells(1,1)方式引用单元格的方法。 Cells方式引用单元格有四种用法。 17.1 WorkSheet.Cells(横座标,纵座标) 引用某工作表中行、列座标所指定的单元格,可以使用本方式,基本语法为: Sheet.Cells(RowIndex,ColumnIndex)其中工作表对象可选,行与列座标也可选 本方式可以引用某个工作表中横座标与纵座标之交叉点,该座标原点在左上角,向右偏移一个单位即为A列,向下偏移一个单位即第一行,那么Cells(1,1)即为A1单元格。 如果代码中忽略工作表对象,则默认指当前工作表;如果忽略横座标与纵座标号,则默认引用所有单元格。 以下是几种合法的单元格引用: Sheets(1).Cells(5, 4)表示引用第一个工作表中行座标为5、列座标为4的单元格D5 提示:ET的最大行是65536,最大列是IV列,对应的数值为256,那么Cells的第一参数只能在1到65536之间,第二参数只能在1到256之间,否则将产生运行时错误。 17.2 WorkSheet.Cells(行号,列标) 本引用方式依靠目标地址的行号与列标来确定目标单元格。其中行号与列标两个参数都是必选参数。而工作表对象Worksheet则是可选参数。 以下三个引用为合法的单元格对象引用: Sheets(生产表).Cells(2, C)表示引用“生产表”中C2单元格 Cells(12, Z)表示引用当前表Z12单元格 但是第一参数只能使用数值,文本型数字也不行。例如Cells(12, Z)将产生错误。Excel允许这种书写方式,它会将文本“”12”转换成数值“12”,然后再引用单元格。 提示:本方法引用单元格永远只能引用一个单元格,不能引用区域。 17.3 Range.Cells(横座标,纵座标) 本方式引用单元格是以其父对象Range左上角单元格做为参照系,向下及向右累加的座标系数来指定单元格。有别于第一种在工作表中A1单元格为参照。 例如以下单元格引用: Range(B2:G10).Cells(2, 2) 代码表示B2:G10单元格中横座标为2、纵座标为2的单元格C3。利用图展示它们的关系则可以表现为: 图17.1 Range(B2:G10).Cells(2, 2)图示图中黄色单元格如果相对于工作表,那么其横纵座标分别为3和3,但对于B2:G10区域,其横纵座标则为2和2。 Cells的参数还可以使用小数,不过VBA会将其进行四舍五入后再计算座标。例如: Range(B2:G10).Cells(1.5, 4.4)表示引用B2:G10区域第二行、第四列G3单元格 还可以使用负数或者0做为参数,那么其座标计算方式则向左与向上偏移。例如: Range(D4:G10).Cells(-1, -1)表示引用B2单元格 Range(D4:G10).Cells(0, -2)表示引用A3单元格 图17.2是负数座标的图示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园模拟法庭管理制度
- 校园生产安全管理制度
- 校园花木树木管理制度
- 校外培训收费管理制度
- 卫健委负面清单承诺书
- 果园碳汇智能监测-洞察及研究
- 建筑工程结构安全测试题
- 自然景观描写技巧解析教案
- 办公设备维护保养记录表格(设备台账)
- 秋日乡村美丽的自然景色描写(7篇)
- 古代数学家故事--祖冲之(二年纪)
- 城市轨道交通票务管理(山东职业学院)知到智慧树答案
- 福建省福州市(2024年-2025年小学六年级语文)统编版期末考试((上下)学期)试卷及答案
- 网络安全项目授权委托书范本
- (高清版)DB43∕T 2428-2022 水利工程管理与保护范围划定技术规范
- 个人诚信承诺书模板(共4篇)
- 供水公司自来水厂隐患排查和风险分级管控管理制度
- 企业一季一课安全教育内容
- 《乘风破浪扬帆起航》高三主题班会 高中主题班会
- GB/T 44543-2024预制混凝土节段拼装用环氧胶粘剂
- 附着式升降脚手架维护保养管理制度
评论
0/150
提交评论