应用VBA操作EXCEL
Excel对象模型中的常用对象
Application,workbooks,workbook,worksheet,range, cell 1.application对象
application.Activesheet.cells(1,2)=time msgbox activecell.value with activecell.font .bold=true .italic=true End with 2. workbook对象
Application.activeworkbook.save
3.worksheet对象
Msgbox worksheets(“sheet1”).range(“a1”) Worksheets(“sheet1”).range(“a7”).value=20
Worksheets(“sheet1”).range(“b7”).formula= “=sum(a1:a5)” 4.range对象的columns,rows属性 Set rng=activesheet.range(“c1:h26”) Msgbox rng.columns.count Msgbox rng.rows.count
6.woeksheet.range对象的cells属性 Worksheets(1).cells(1,1).value=24 Sub setuptable() Dim I as long
Worksheets(“sheet1”).activate For i=1 to 5
Cells(1.I).value=i Next i End sub
Worksheet(1).range(“c5:c10”).cells(1,1).formula=”=rand()” 应用实例
1. 使用VBA合并列
Sub mergetest() Dim I as long For I = 3 to 30
Cells(I,3)=cells(I,1) & cells(I,2) Next End sub
2. 自动隐藏或者显示表格中无数据的行
Sub hidecell() Dim I as long For I = 1 to 300
If cells(I,1).value=”” then Rows(i).hidden=true
End if Next i En d sub
Sub shoecell() Dim I as long For i=1 to 300
I f cells(I,1).value<>” ” then Rows(i).hidden=false End if Next i End sub
3. 使用VBA操作工作表单元格
Public sub writescell() [a1]=100 [a2:a4]=10
Range(“b1”)=200 Range(“c1:c3”)=300 Cells(1,4)=400
Range(cells(1,5),cells(5,5))=50 En sub
Public sub readcell() Msgbox [a1]
Msgbox range(“b1”) Msgbox cells(1,4) End sub
Sheets(4).[a1]
Sheets(4).range(“b1”) Sub roundtozero() Dim I as long Dim rcell as range For i= 1 to 20
Set rcell=worksheets(“sheet2”).cells(i,4) If isnumeric(rcell.value) then If abs(rcell.value)<0.1 then Rcell.value=0 End if End if Next i End sub
4. 查找工作表的第一个空行
Sub findempty() Dim x as long X=1
Do until (isempty(cells(x,2).value) X=x+1 Loop
Msgbox “空行为” & x Cells(x,2)=time En d sub
5. 改变EXCEL界面的标题
Sub changecaption()
Application.Caption = \我的EXCEL\End Sub
Sub mytime()
Application.Caption = Now()
Application.OnTime Now + TimeValue(\End Sub
Application.ontime(开始运行时间,运行的过程名,运行的最晚时间,是否安排一个新的ontime过程)
Application.ontime now +timevalue(“00:00:15”),”my_procedure” Application.ontime timevalue(“17:00:00”), ”my_procedure” Application.ontime
earliesttime:=timevalue(“17:00:00”),procedure:= , ”my_procedure”,schedule:=false 6. 隔行格式化工作表
Sub colorsheet() Dim I as long
For i= 1 to application.selection.rows.count If I mod 2=1 then
Selection.rows.interior.color=rgb(255,0,0) End if Next i End sub
7. 批量修改数据
Sub changevalue() Dim I as long For i=1 to 10
Range(“a11:a20”).cells(I,1).value=range(“a11:a20”).cells(I,1).value+5 Next i End sub
应用VBA自定义函数 引用(切换的快捷键F4) A1引用样式 引用位置 列A行9交叉处的单元格 在列A和行9到行20之间的单元格区域 在行12和列B到列E之间的单元格区域 行5中的全部单元格 使用的引用 A9 A9:A20 B12:E12 5:5 行5到行10之间的全部单元格 列H中的全部单元格 列H到列J之间的全部单元格 列A到列E和行10到行20之间的单元格区域 绝对引用与相对引用以及混合引用 相对引用=A1+B2 A 1 3 绝对引用=$A$1+$B$1 A 1 3
R1C1引用样式 含义 对在同一列,上面俩行的单元格的相对引用 对在下面俩行,右面俩列的单元格的相对引用 对在工作表的第二行,第二列的单元格的绝对引用 对活动单元格整个上面一行单元格区域的相对引用 对当前行的绝对引用 运算符优先顺序 优先级 1 2 3 4 5 6 7 8 9 自定义函数 创建自定义函数
类似EXCEL求平均值的VBA函数
Function myaverage(rng As Range) As Double Dim i As Long
运算符 : 空格 , % ^ *或/ +或- & =,>,<,>=,<= B 2 4 B 2 4 5:10 H:H H:J A10:E20 =A1+B2 (3) =A2+B2(7) =$A$1+$B$1(3) =$A$1+$B$1(3) 引用 R[-2]C R[2]C[-2] R2C2 R[-1] R Dim num As Long Dim sum As Double num = rng.Rows.count For i = 1 To num
sum = sum + rng.Cells(i, 1) Next i
myaverage = sum / num End Function