1、单元格公式
‘在B4单元格插入公式=a1
‘这里是以b4为标杆位置,b4所在单元格为0,向前一直递减,例如b1单元格在行上的相对距离为r[-3],那么在列上相对a1的距离为c[-1](b1所在列为1,向前一列即为-1向前递减)
Range(“b4”).FormulaR1C1 = “=r[-3]c[-1]”
‘在b4单元格计算b1-b3的和
‘r[-3]c:b1单元格,r[-1]c:b3单元格
Range(“b4”).FormulaR1C1 = “=sum(r[-3]c:r[-1]c)”
2、With语句
适用于对同一对象多次调用时
With 对象名
.属性 = 值
.属性 = 值
.属性 = 值
End With
3、Range引用单元格和区域
Range(“a1”) 引用A1单元格,以左上角为标准
Range(“A2:D1”) 引用A2到D1这片单元格区域
Range(“D3:F7”).(1,3) 引用D3到F7这片区域中的第1行第3列,以D3为参考标准
Range(“D” & i) 引用D列和变量i组成的行的单元格
Range(“D3:F4,G10”) 引用D3:F4和G10这两个区域,即多区域引用
Range(“2:10”) 引用第2行到 第10行
Range(“D:Z”) 引用第D列到第Z列
Rows(“2:4”) 引用第2行到第4行,如果参数为空表示引用所有行
Column(“D:Z”) 引用第D列到第Z列,如果参数为空表示引用所有列
Range(Range(“A1”),Range(“D2”)) 引用A1D2这片区域
4、Cells的方式引用单元格
WorkSheet(1).Cells(5,4) 引用第一个工作表中的第5行第4列
WorkSheet.Cells(2,”C”) 引用C2单元格
Range(“B2:G11”).Cells(2,2) 相对于区域B2:G11的第2行第2列
Range(B2:G11”)(5) 表示引用区域B2:G11的第5个单元格
5、[a1]方式引用单元格,不需要加引号
[D2:D3,F10] 引用D2到D3和F10这两个区域
[a1] 引用A1这个单元格
6、三种引用方式的对比
比较项目及引用方式 |
Range(“A1”) |
Cells(1,1) |
[a1] |
可以引用的对象 |
单元格、多区域、行列 |
单元格 |
单元格、多区域、行列 |
属性与方法列表 |
支持 |
不支持 |
不支持 |
循环 |
行循环 |
行列都支持 |
不支持 |
输入简便性 |
差 |
差 |
好 |
支持参数 |
索引号、Item、Cells |
索引号、Item、Cells |
Item、Cells |
效率 |
中 |
高 |
低 |
如果反复引用单个单元格,则使用Cells的方式,否则使用Range的方式
7、Selection、ActiveCell
Selection: 代表当前选中的区域
ActiveCell: 表示活动单元格
这两个只能引用活动表,引用非活动表会报错
Selection(4).Activate 让选中区域的第4个单元格激活
Selection.Cells(3,2).Activate 让选中区域的第3行第2列单元格激活
8、已用区域与当前区域
UsedRange: 表示已存放数据的区域、他是所有的数据单元格组成的最小矩形,可能有些单元格并没有数据在已用区域内,一个工作表中只有一个已用区域,父对象为worksheet
CurrentRegion: 当前区域,一个表中可以存在多个当前区域,父对象为Range
9、SpecialCells:按条件引用区域,实际就是excel中的定位条件功能
格式: Range.SpecialCells(type,value)
type: xlcelltype,可用的类型如下:
xlcelltype |
含义 |
值 |
xlcelltypeallformateconditions |
包含条件格式的单元格 |
-4172 |
xlcelltypeallvalidation |
包含有效性验证条件的 |
-4174 |
xlcelltypeblanks |
空单元格 |
4 |
xlcelltypecomments |
包含注释 |
-4144 |
xlcelltypeconstants |
包含常量 |
2 |
xlcelltypeformulas |
包含公式 |
-4123 |
xlcelltypelastcell |
已用区域的最后一个单元格 |
11 |
xlcelltypesameformatconditions |
含有相同条件格式的 |
-4173 |
xlcelltypesamevalidation |
含有相同有效性条件的 |
-4175 |
xlcelltypevisible |
所有可见单元格 |
12 |
只有type是xlcelltypeconstants和xlcelltypeformulas时,value才有意义,value的取值如下:
xlspecialcellsvalue |
含义 |
值 |
xlnumbers |
数值 |
1 |
xltextvalues |
文本 |
2 |
xllogical |
逻辑值 |
4 |
xlerrors |
错误值 |
16 |
range(“a1:g10”).specialcells(xlcelltypeblanks): 引用a1:g10区域的空白单元格
range(“a1:g10”).specialcells(xlcelltypeformulas,23) 引用带有公式的单元格
10、CurrentArray: 引用数组区域
数据区域指某个函数的参数是某个单元区域,这个单元区域不能单独更改某个单元格,只能先选择整个数组区域,然后做整体操作,引用的格式为:
range.CurrentArray
11、resize:重置区域大小
range(“a1”).resize(2,2) 把a1区域重置为2行2列
12、offset: 根据偏移量引用新区域
range.offset(rowoffset,columnoffset): 把单元格下移rowoffset行,列向右移columnoffset列,如果为负数,则行为向左,列为向右。
13、union: 多区域引用
application.union(range(“a1:b2”),range(‘d3:g4”)) 把a1:b2和d3:g4这两个区域合为一个区域,方便后续程序引用,并不是合并单元格,只是逻辑上的合并。
14、Intersect: 区域的交集
application.intersect(range(“b1:b10”),range(“2:2”)) 引用b1:b10与第2行的交集,如果交集则为Nothing
15、End: 向上、下、左、右引用第一个碰到的非空或者有数据的单元格
格式: range.end(Direction),direction的取值如下:
方向 |
值 |
描述 |
xldown |
-4121 |
向下 |
xltoleft |
-4159 |
向左 |
xlltoright |
-4161 |
向右 |
xlup |
-4162 |
向上 |
16、entirerow/entirecolumn: 将选择的单元格扩展成整个或者整列
actuvesheet.usedrange.specialcells(xlcelltypeblanks).entirerow.delete: 将活动工作表中已有区域的空白单元格整行删除
selection.entirerow.insert: 将选区扩展成整行,然后插入,insert会根据前面是行还是列、或者是单元格来进行插入
17、rangeselection: 工作表中选择的单元格
和selection的区别是:如果只选择了单元格,则这两者相同。如果既选择了单元格,又同时选择了图片,则rangeselection表示选择的是单元格,而selection表示选择的图片
18、visiblerange: 表示excel中可以看见的单元格区域
19、判断单元格是否有批注: ActiveCell.Comment is Nothing
20、addcomment: 添加单元格批注
格式: range.addcomment(text),向单元格中添加内容为text的批注,如果批注内容是数字,则需要用cstr转换成string
21、autosize: 批批注框随内容多少而自动调整大小
格式: comment.shape.textframe.autosize = True
22、autoshapetype: 修改批注的外形
格式: range.comment.shape.autoshapetype =137 把外形修改为气泡,取值为1到137
23、clearcomments: 清空表中的所有批注
格式: range.clearcoments,清空前可以先用activesheet.comments.count判断一下批注数目
24、图形对象
图形对象的类别是shape,shapes表示图形集合,形状、剪贴画、smartart对象、图表、艺术字、文本框、图片都属于shape,shapes不可以指操作,常用方法如下:
activesheet.shapes.item(2): 引用活动表中的第2个图形
activesheet.shapes(1).name: 获取第1个图形的名称
activesheet.shapes(3).select: 选择第3个图形
worksheets(1).shapes(3).left =0: left是左边距,左边距为0 表示移动最最左边
25、drawingobjects:隐藏的图形对象集合,可以做指操作,可以实现shapes没有的功能
activesheet.drawingobjects.delete: 删除所有图形
activesheet.drawingobjects.shaperange.left = range(“b:b”).left: 所有图形按B列对齐
26、shaperange.scaleheight: 调整图形的高度
27、工作表
sheets: 工作表、图表、4.0宏表、5.0对话框都属于此类
worksheets: 代表excel表集合
worksheet(2): 引用第2个工作表
worksheets(“sheet1”): 引用名称为sheet1的工作表
worksheets(4).activate: 激活第4个工作表
worksheets(1).visible=0: 隐藏第1个工作表,如果值为2表示深度隐藏,深度隐藏的表只能使用代码让其显示
worksheets.add 新增工作表
worksheets.delete删除工作表
28、workbook: 工作簿
workbooks: 工作簿集合
workbooks.add: 新增工作簿
workbooks.count: 工作簿数目
原创文章,转载请注明出处:http://www.nwumba.cn/article/17/