VBA学习笔记之单元格
、'单元格对象在VBA中一个非常基础,同时也很重要的。
'它的表达方式也是非常的多样化。
'----------------------------------------------------
'Range 对象
'代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域。'Range ("文本型装单元格地址")'range的常见写法
Sub rng()
Range("a1").Select '单元格
Range("a:a").Select '列
Range("1:3").Select '行
Range("a1:b10").Select '相邻区域
Range("a1:d7 c4:e8").Select '不相个邻区域(同时选择多个不同区域按住CTRL选择)
End Sub
Range("a1:d7 c4:e8").Select 注意这里d7后面是空格表示取二者区域的交集,若为逗号,则是取二者区域的并集
'写法:Range ("文本型装单元格地址1","文本型装单元格地址2")
'range的变化写法
Sub rng变化()
Range("a1:b10").Select '一般写法
Range("a1", "b10").Select '变化写法1
Range(Range("a1"), Range("b10")).Select '变化写法2
Range("a1") = 123
End Sub'注意:
'1.如果在range前没有指定工作表,则默认为活动工作表
'2.如果对象不是活动工作表(如活动图表),则上面的代码也会出现错误Sub 单元格对象例子()
Debug.Print Range("a:a").Count '计数工作表最大的行数
Debug.Print Range("1:1").Count '计算工作表最大的列数
Debug.Print Application.CountA(Range("a:a")) '计算工作表已使用的行数 ‘CountA计算有多少个非空单元格’
Debug.Print Application.CountA(Range("1:1")) '计算工作表已使用的列数
End Sub
动态单元格的引用(事先不清楚要引用的单元格)(用变量代替)
'1.range("地址区域").range("地址区域")
Sub 序号表示法()
Range("b2:d4").Range("b2").Select '相对引用的写法'
'参照前一个range的左上单元格
End Sub'2.range地址区域中支持变量
Sub range的变量支持()
Dim a%
a = 3
Range("a" & a).Select
Range("c3:e5")(2).Select
End SubSub 实例1动态选单元格或区域()
Dim i%
i = Application.CountA(Range("c:c")) '找到c列中已使用的最后一个单元格位置
Range("c" & i).Select '选择C列最后一格
Range("a1", "c" & i).Select '选择A1到C列的最后一格(方法一)
Range("a1:c" & i).Select '选择A1到C列的最后一格(方法二)
'小结:动态单元格区域的定位,可以应用到单据的保存等实际工作中
End Sub
Range的引用:
Sub test()
Range("a1:c3")(3).Select
Range("a1:c3")(4).Select
End Sub
结果第一次选择的是C1,第二次选择的是A2
总结:range(......)(number)引用的顺序是从左往右,然后从上往下,并且number是对前面区域的相对位置的引用,当然number可以为(2,3)这样的坐标
即:number是相对引用,并且有一定顺序。
Range引用与索引值应用(有条件的平均工资):
'小结: '1.这个索引值是参照前一个单元格区域左上单元格进行定位引用的 '2.索引值可以是正数,负数,零值,小数 Sub 大于等于2500的平增工资() Dim rs%, rng%, lj&, k% For rs = 1 To 60Range("b2:c20")(rs).Select'这句可以不用rng = Range("b2:c20")(rs)If rng >= 2500 Then lj = lj + rng: k = k + 1 Next rsMsgBox "大于等于2500的平均分为:" & Int(lj / k) End Sub
'cells单元格引用法
'写法:cells(行号,列号)
Sub cells基本写法()
Cells(3, 4).Select '行列号均为数字
Cells(2, "c").Select '行为数字,列为列标字母
Cells.Select '全选
End Sub'cells可以像range一样可以参照前面的单元格位置
Sub 参照写法()
Range("b3:f11").Cells(2, 2).Select
Range("b3:f11").Cells(6).Select '从左到右,从上到下
Range("b3:f11")(6).Select '与上一句相等
End Sub
'注意:
'1.cells中的数字一样支持正数,负数,0值,小数(四舍六入五单双)
'2.cells不能像range一样可以引用一个区域,只能引用一个单元格'cells还可以嵌套在range中
Sub 嵌套()
Range(Range("b1"), Range("f11")).Select '这种嵌套方法写变量比较麻烦,代入变量比较麻烦
Range(Cells(3, 2), Cells(11, 6)).Select '这种嵌套方法写变量比较方便,可以代入四个变量
End SubSub 动态引用行列区域()
Dim a%, b%
a = Application.CountA(Range("a:a"))
b = Application.CountA(Range("1:1"))
Range(Cells(1, 1), Cells(a, b)).Select
End Sub
三种单元格引用小结
Sub range引用区域且有变量() Dim i i = 1 Range("a1:c" & i).Select '引用单元格是区域且有变量,就用Range Cells(i, "c").Select '引用的是单个单元格且有变量,就用Cells [a1:19].Select '引用的是区域或单元格且无变量,就用简化的形式 End Sub
Range.CurrentRegion属性
1 'Range.CurrentRegion 属性 2 '返回一个 Range 对象,该对象表示当前区域。 3 Sub 当前区域() 4 [a1].CurrentRegion.Select 5 [f8].CurrentRegion.Select 6 End Sub
效果图:&
1 Sub currentregion应用() 2 Rows(8).Clear 3 a = [b2].CurrentRegion.Address 4 b = [b5].CurrentRegion.Address 5 c = [b2].CurrentRegion.Count + 1 6 Set c = Range("b8", Cells(8, c)) 7 c.FormulaArray = "=" & a & "+" & b '这个实际上是用工作表的公式"=a+b" 8 End Sub
效果图:
转载于:https://www.cnblogs.com/gilgamesh-hjb/p/7299310.html
VBA学习笔记之单元格相关推荐
- vba excel学习笔记-从单元格获取数据,修改数据
从单元格获取数据 获取sheet名字为 "sheetname"的表格中的第一行第五列的值 赋值给变量a a = Sheets("sheetname").Cell ...
- PHPSpreadsheet学习笔记——访问单元格
文章目录 一.实例化对象 二.访问单元格 2.1获取单元格 2.2单元格赋值 2.3excel数据类型 2.3.1在单元格设置公式 2.3.2在单元格设置日期和时间值 2.3.3 设置带前导零的数字 ...
- VBA学习笔记8:单元格的合并与拆分
VBA学习笔记8:单元格的合并与拆分 如下图,需要实现1图到2图(单元格合并),或2图到1图(单元格拆分). 1图: 2图: 合并单元格代码如下: Sub 合并单元格()Dim k%, rng As ...
- Excel VBA 学习笔记13:单元格的格式
Excel VBA 学习笔记13:单元格的格式 NumberFormat 属性 (Excel) vba excel 单元格格式设置 Excel VBA 单元格格式 python解决SNIMissing ...
- 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮
陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...
- VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接
VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接 1.将文件夹中的xlsx文件名复制到新工作簿: 2.将文件夹中的xlsx数据簿中的sheet复制到新表并重命名: 3.插入超 ...
- VBA学习笔记(9)--生成点拨(1)
VBA学习笔记(9)--生成点拨(1) 说明(2017.3.26): 1. 还没写完,写到新建文件夹了,下一步新建word,重命名,查找点拨,把点拨复制进去,因为要给点拨编号,应该会很麻烦 1 Pub ...
- VBA中获取合并单元格的真实地址
2019独角兽企业重金招聘Python工程师标准>>> 二少工作需要在VBA中获取合并单元格的地址范围, 于是有了此方法,作此记录 Private Sub Worksheet_Bef ...
- VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿
VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿 1.对每行数据按照类别所在列进行循环,判断某类别的工作簿是否存在: 2.如果不存在,则新建工作簿并将该行数据复制粘贴: 3.如果存在则打开 ...
- CGAL笔记之单元格复合体和多面体篇—曲面网格
CGAL笔记之单元格复合体和多面体篇-曲面网格 0.前言 1.用法 1.示例 2.连通性 3.范围和迭代器 3.1 示例 4.循环器 1.示例 5.属性 1.示例 6.边界 7.Surface Mes ...
最新文章
- python 语言教程(2)基础语法
- Tensorflow:interactivesession和session的区别。
- 设备文件BSP及嵌入式驱动开发笔记
- FishC笔记—18 讲 函数:灵活即强大
- flash做动画教程(基础篇)
- ios备忘录下载安卓版_iOS8备忘录
- c语言 步进电机 程序,两相5、6线步进电机C语言程序
- 广义线性模型python
- windows PE结构解析
- php 进程通信系列 (三)信号量
- 【云原生|实践指北】5:真实业务场景下云原生项目落地实践学习
- 如何使用智能手机或Smartwatch重新配置睡眠周期
- Spring基础学习
- 创意编程——随机(扩散限制聚集DLA)
- VS2008,C++,镜子反射 光线反射游戏
- Docker网络、端口映射详解篇(三)
- PCB Polar SI9000阻抗模型图片文字识别方法
- git clone 太慢咋搞?两行命令解决(需要纸飞机)
- 工作中的项目怎么理解
- 早上睡醒后,程序员如何快速清醒头脑?