单元格对象
使用三种方式表示
- range
- cells
- []
Range
Microsoft文档: https://docs.microsoft.com/zh-cn/office//vba/api/excel.range(object)
表示一个单元格、一行、一列、一个包含单个或若干连续单元格区域的选定单元格范围,或者一个三维区域
表示单元格对象
- 参数:字符串
- 必须使用双引号括起来
- 使用变量时需要使用&(字符串连接符)
- 单个单元格: range("a1")
- 表示a1单元格
- 单元格区域: range("a1: b10")
- 表示a1:b10单元格区域
- 一行或多行单元格区域:range("1:5")
- 第一个数字:从第几行开始
- 第二个数字:到第几行结束
- 表示第1到5行
- 一列或多列单元格区域:range("a:c")
- 使用字母表示列
- 参数和上一个一样
- 表示从a列到c列
Cells
使用行列号来表示单元格
- 先是行号,后面是列号,顺序和range不同
- 行号,列号都是从1开始
- 只能表示一个单元格
- cells(2,3) 第二行,第三列单元格,即C2单元格
★ 不带参数的Cells表示当前页的所有单元格
[]
- 最简单的方式
- [a1] 表示a1单元格
- a1 不是字符串,不需要添加引号
- 不支持变量,一般不使用
方法
- copy
- 复制单元格
- 参数:粘贴单元格的位置
-
Range("H7:L7").Copy Destination:=Range("n7") Range("H7:L7").Copy Range("m7")
- 整行复制的话,目标位置必须从a列开始
- clear
- 清楚单元格
- 包含内容和格式设置(边界,背景等)
- clearcontents
- 清楚单元格内容
- AutoFilter
- 筛选
-
Field: 需要按照拿一些进行筛选,参数必须是列号
- Criteria1: 注意最后是数字1,而不是字母l, 表示筛选的条件,一般是字符串
- 没有参数的AutoFilter会在行上添加筛选按钮,如果是第二次的AutoFilter则会取消筛选状态
属性
-
Value
- 单元格的值
- 是默认参数,常常省略,使用单元格的值时,直接使用单元格对象
-
Range ("a1") Range("a1").Value
' 当使用value时,可以省略,直接使用单元格
-
offset
- 偏移量
- 相对位置,当使用相对引用录制宏的时候,使用offset记录的单元格
- 参数: (行的偏移量,列的偏移量)
- 注意:坐标原点在左上角,正数表示: 下移多少行,右移多少行
- 偏移之后返回的也是一个range对象
- 做运算的时候,使用offset代替range绝对位置
-
end
- 表示边界位置
- 搭配单元格和方位使用
- 等同于:Excel中时使用Ctrl+Shift+方向键 定位单元格的上下左右边界
- 常用于确认表的边界,如表中有多少行数据
- 本质上是沿着单元格的上下左右四个方向探测,遇到非空单元格就返回
- 探测边界时,使用end-up组合
- 当且只有一行数据时,使用range("a1").end(xldown)会定位到当前sheet页的最后一个单元格,而不是实际的边界
- 常用于确定有多少行
-
Range("a65536").End(xlUp).Row # 有多少行
- EntireRow和EntireColumn
- 表示当前单元格的整行,整列数据
- 聚光顶效果的实现是采用这两个属性实现的
-
Sub 聚光灯效果() ' 去除所有cells的背景颜色 Cells.Interior.Pattern = xlNone ' 设置整行单元格的背景颜色 With Selection.EntireRow.Interior .Color = 9699327 End With ' 设置整列的填充颜色 With Selection.EntireColumn.Interior .Color = 9699327 End With
- resize
- 重新定义区域
- 参数(行的大小, 列的大小)
- 对象: 单元格或者单元格区域
- 表示自第一个单元格位置开始,一个包含几行,几列的单元格区域
-
Range("a1:a10").Resize(2, 2).Select Range("a1").Resize(2, 2).Select # 都表示a1:b2的四个单元格