ExcelVBA入门教程:选取单元格的8种方法
● 本技巧目的:掌握单元格的各种引用方法。
● Excel 就是由基本元素 -- 单元格构成的,它就像我们身体的细胞一样,可是非常重要的,千万不能小看它的作用。不论是学习 vba 还是 操作 Excel 本身, 最先接触到的就是单元格,只有熟练的掌握了,才能进行后续的操作。
★★★注意:下面所有的标点符号全部使用半角,或者说英文标点。代码中不区分大小写。
● 1.Range 属性
单个单元格的表示方法:
表示方法:Sheet1.Range("A1")
注释:
1)工作表 Sheet1 的单元格:A1, 书写格式:Sheet1.Range("英文字母+数字")
2)保持良好的习惯加上工作表名称,对于后续跨工作表的操作会减少很多的问题。就像寄快递时要把小区的每栋楼的编号写上一样,不会发生快递寄到隔壁楼的问题哟。
单元格地址选中使用命令: .Select
Sheet1.Range("A1").Select
多个单元格的表示方法:
连续单元格:A3 到 C6 单元格
表示方法:Sheet1.range("A3:C6")
注释:
1)书写方法:Sheet1. ("英文字母+数字 : 英文字母+数字")
2)首尾单元格之间用 : 连接
二组连续单元格,组合起来的方法:
A3 到 C6 单元格 , E7 到 G11 单元格
表示方法: Sheet1.range("A3:C6, E7:G11")
Sheet1.range("A3:C6,E7:G11").Select
注释:
1)书写方法:Sheet1. ("英文字母+数字 : 英文字母+数字, 英文字母+数字 : 英文字母+数字")
2)二组不连续的地址,中间用 ,分隔
3) 要点:连续单元格:首尾之间用 : 来连接, 二段不连续的单元格组合用 ,分隔
● 2. Cells 属性
★★★小技巧:安装代码助手后,alt+数字 0 :可以快速转换 列号 为数字 或者 英文字母
单个单元格:
表示方法:sheet1.cells(1,1) 或者 sheet1.cells(1,"A")
注释:
1)括号内 前面代表:行 后面代表:列, 用 ,分隔
2)二种方法:
① 前后都使用数字
② 前面使用数字,后面用英文字母代表列号
③ ★★★ 注意:英文字母要加双引号
多个单元格的表示方法:
连续单元格:B2 到D7 单元格
表示方法:sheet1.Range(sheet1.cells(2,2),sheet1.cells(7,4)) 或者
sheet1.Range(sheet1.cells(2,"B"),sheet1.cells(7,"D"))
注释:
书写方法:sheet1.range(工作表名称.左上方单元格,工作表名称.右下方单元格)
● ★★★ Range 和 Cells 总结:
1) Range 和 Cells 书写方法不同: Range("A1") 和 Cells(1,1) 或者 Cells(1,"A") 所指的单元格是相同的
2) Range:写好后, 后面加上 . 系统会出现提示, Cells 没有
3) Range:可以表示连续的单元格
4) Cells: 更方便,直接写行,列号, 中间用英文逗号分隔,不需要使用字符串拼接。它是在循环中根据行列号访问的主要手段
例如: Range("A" & rows.count) Cells(rows.count, "A")
● 3. 方括号 [ ]
● Sheet1.Range("A1") 可以写成 sheet1.[A1]
● Sheet1.range("A1:C1")可以写成 sheet1.[A1:C1]
● ★★★ 注意:只能使用列号的英文字母或者行号数字,不能使用变量
● 4.Offset 属性
Offset 的使用方法:
以某单元格作为起点,然后以他为起点向上下,左右偏移。
●
1)需求:当用户选中单元格后 , 需要在选中的单元格左上单元格写入数字 1, 且选中单元格是未知的。
2)有了Offset 属性,只需要在 Selection 后输入偏移的行列号,就能实现输入。
3)实现方法:Selection.offset(-1,-1)= 1 这样书写是不是很方便呢?
二种方法:
使用 offset, 假设以 B3 为起点, 这个起点位置可以根据自己的要求来设定。
书写方法:Sheet1.range("B3").offset(0,1)
注释:
1)代表:B3 开始,不偏移行,向右偏移一列, 即 C3 单元格
2) offset 括号内 前面数字代表行, 后面数字代表列
3)数字 0 代表:不偏移
4)数字 -1 代表:向上 或者 向左 偏移
例如1:Sheet1.range("B4").offset(-1,1) 即: B4 向上偏移一行,向右偏移一列, 即 C3 单元格
例如2:Sheet1.range("D5").offset(-2,-1) 即: D5 向上偏移二行,向左偏移一列, 即 C3 单元格
使用 range 或者 cells, 假设以 B3 为起点,这个起点位置可以根据自己的要求来设定。
书写方法:sheet1.range("B3").cells(1,2) 或者 sheet1.range("B3").range("B1")
注释:
1)上面书写方法代表:B3 开始,不偏移行,向右偏移一列, 即 C3 单元格
2)详解:
① 不能 向上 或者 向左 偏移
② 数字1 代表:本行,本列
③ 数字2 代表:向下 1 行或者 向右 1 列
④ 数字3 代表:向下 2 行或者 向右 2 列
⑤ 后面以此类推,每增加 1,偏移 也 增加 1
⑥ Range 中的英文字母可以当作数字来看 即 B 代表数字 2, C 代表 数字3
● 5.Resize 属性
●
要求:表示上图的 B3:E10 单元格
同理:首先以某单元格作为起点,然后以他为坐标向上下,左右扩展。这里是使用扩展哦。
好处和前面说的 Offset 是一样的:修改方便,另外即使是未知位置单元格也能扩展。
书写方法:Sheet1.Range("B3").Resize(8,4)
注释:
1)上面书写方法代表:B3 开始,(含本行本列)共扩展 8行,4列, 即 B3:E10 单元格
2)详解:
① 数字1 代表:本行,本列
② 数字2 代表扩展:向下 1 行 或者 向右 1 列
③ 数字3 代表扩展:向下 2 行 或者 向右 2 列
④ 后面以此类推,每增加 1,扩展 也 增加 1
offset,resize 组合联合使用
这两个属性是可以组合使用的。这样对于后期的改动会更为方便快捷。
要求:表示 C3:E9 单元格
书写方法:Sheet1.Range("A1").Offset(2,2).Resize(7,3)
注释:
1) A1 单元格 偏移:向下 2行 向右 2列 再扩展:向下 7行 向右 3列
2)偏移,扩展可以前后随意组合
★★★ Offset、Range和 Resize 总结:
● 6.Union 属性
连接二个不连续的区域: B3:D8, G10:I15
书写方法: Union(Sheet1.Range("B3:D8"),Sheet1.Range("G10:I15"))
● 7. Usedrange属性
书写方法: Sheet1.Usedrange
注释:
1)确定Sheet1 的 已使用区域
2)该代码所表示的地址为:A1:D7
书写方法:Sheet1.Usedrange
注释:
1)该代码所表示的地址为:A1:G11
2)★★★ 注意:F10:G10 区域即使为空格, 表示的地址也会是 A1:G11
● 8. CurrentRegion 属性
书写方法:Sheet1.Range("A1").CurrentRegion
注释:
1)以 A1 为起点的连续区域
2)该代码表示的地址为:A1:D7
书写方法:Sheet1.Range("F10").CurrentRegion
注释:该代码表示的地址为:F10:G11
●