VBA语法汇总.docx
《VBA语法汇总.docx》由会员分享,可在线阅读,更多相关《VBA语法汇总.docx(76页珍藏版)》请在冰豆网上搜索。
VBA语法汇总
目录
1.循环语句5
2.判断语句6
3.VBA对象方法和属性7
(一)工作簿7
(二)工作表7
(三)单元格7
4.VBA分支及END语句8
4.1.END语句8
4.2.Exit语句8
4.3.GOTO语句9
4.3.1.Goto语句,跳转到指定的地方9
4.3.2.goSub..return,跳过去,再跳回来9
4.3.3.onerrorresumenext'遇到错误,跳过继续执行下一句10
4.3.4.onerrorgoto'出错时跳到指定的行数10
4.3.5.onerrorgoto0'取消错误跳转10
5.excel文件操作10
5.1.excel文件和工作簿,excel文件就是excel工作簿,excel文件打开需要excel程的支持10
5.2.Workbooks工作簿集合,泛指excel文件或工作簿10
5.3.工作簿窗口11
5.4.应用11
5.4.1.判断A.Xls文件是否存在11
5.4.2.判断A.Xls文件是否打开11
5.4.3.excel文件新建和保存11
5.4.4.excel文件打开和关闭11
5.4.5.excel文件保存和备份12
5.4.6.excel文件复制和删除12
6.Excel单元格选取12
6.1.表示一个单元格(a1)12
6.2.表示相邻单元格区域12
6.3.表示不相邻的单元格区域12
6.4.表示行13
6.5.表示列13
6.6.重置坐标下的单元格表示方法13
6.7.表示正在选取的单元格区域14
7.特殊单元格定位14
8.单元格的信息14
8.1.单元格的值14
8.2.单元格的地址14
8.3.单元格的行列信息15
8.4.单元格的格式信息15
8.5.单元格批注信息15
8.6.单元格的位置信息15
8.7.单元格的上级信息15
8.8.内容判断16
9.单元格的格式16
9.1.单元格的数字格式16
9.2.设置单元格自定义格式17
9.3.按指定格式从单元格返回数值17
9.4.单元格的颜色17
9.5.单元格合并18
9.6.单元格编辑19
9.6.1.单元格行列的删除和插入19
9.6.2.单元格的输入20
10.单元格查询21
10.1.调用工作表函数21
10.2.使用Find方法21
11.VBA数组21
11.1.向VBA数组中写入数据22
11.2.VBA数组的读取23
11.3.数组的空间24
11.3.1.数组的大小24
11.3.2.动态数组的动态扩充24
11.3.3.清空数组25
11.4.数组与函数25
11.5.可以生成数组的函数26
12.VBA排序28
12.1.插入排序28
12.2.冒泡排序28
12.3.希尔排序28
12.4.一个插入排序的函数,29
13.VBA字典30
13.1.VBA字典的使用31
14.Msgbox函数33
14.1.窗口按钮类型和图标33
14.2.窗口和标题显示文字34
14.3.窗体返回值35
14.4.自动定时关闭消息窗口35
15.Inputbox函数35
15.1.Inputbox语法概述36
15.2.基本应用36
15.3.Inputbox扩展应用37
16.Excel对话框38
16.1.取得打开文件的文件名和路径38
16.2.返回文件夹名和路径39
17.字符串的拆分组合和转换41
17.1.1.拆分与组合41
17.1.2.查找和替换41
17.1.3.类型转换42
18.Like运算符43
19.正则表达式44
19.1.正刚表达式简介44
19.2.正则表达式常用符47
(一)\号47
(二).(点)47
(三)+号47
(四){}号48
(五)*49
(六)?
号49
(七)^号50
(八)$号50
(九)\b50
(十)|51
(十一)\un匹配51
(十二)[]52
(十三)()号53
1.循环语句
Subt2()
DimxAsInteger
Forx=10000To2Step-3
Range("d"&x)=Range("b"&x)*Range("c"&x)
Nextx
EndSub
Subt3()
DimrgAsRange
ForEachrgInRange("d2:
d18")
rg=rg.Offset(0,-1)*rg.Offset(0,-2)
Nextrg
EndSub
Subt4()
DimxAsInteger
x=1
Do
x=x+1
Cells(x,4)=Cells(x,2)*Cells(x,3)
LoopUntilx=18
EndSub
Subt5()
x=1
DoWhilex<18
x=x+1
Cells(x,4)=Cells(x,2)*Cells(x,3)
Loop
EndSub
2.判断语句
Sub判断1()'单条件判断
IfRange("a1").Value>0Then
Range("b1")="正数"
Else
Range("b1")="负数或0"
EndIf
EndSub
Sub判断2()'多条件判断
IfRange("a1").Value>0Then
Range("b1")="正数"
ElseIfRange("a1")=0Then
Range("b1")="等于0"
ElseIfRange("B1")<=0Then
Range("b1")="负数"
EndIf
EndSub
Sub多条件判断2()
IfRange("a1")<>""AndRange("a2")<>""Then
Range("a3")=Range("a1")*Range("a2")
EndIf
EndSub
Sub判断1()'单条件判断
SelectCaseRange("a1").Value
CaseIs>0
Range("b1")="正数"
CaseElse
Range("b1")="负数或0"
EndSelect
EndSub
Sub判断2()'多条件判断
SelectCaseRange("a1").Value
CaseIs>0
Range("b1")="正数"
CaseIs=0
Range("b1")="0"
CaseElse
Range("b1")="负数"
EndSelect
EndSub
3.VBA对象方法和属性
(一)工作簿
Workbooks代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿
Workbooks("工作簿名称")
ActiveWorkbook正在操作的工作簿
ThisWorkBook'代码所在的工作簿
(二)工作表
Sheets("工作表名称")
Sheet1表示第一个插入的工作表,Sheet2表示第二个插入的工作表....
Sheets(n)表示按排列顺序,第n个工作表
ActiveSheet表示活动工作表,光标所在工作表
worksheet也表示工作表,但不包括图表工作表、宏工作表等。
(三)单元格
cells所有单元格
Range("单元格地址")
Cells(行数,列数)
Activecell正在选中或编辑的单元格
Selection正被选中或选取的单元格或单元格区域
4.VBA分支及END语句
4.1.END语句
作用:
强制退出所有正在运行的程序
4.2.Exit语句
退出指定的语句
1)ExitSub
Sube1()
DimxAsInteger
Forx=1To100
Cells(1,1)=x
Ifx=5Then
ExitSub
EndIf
Nextx
Range("b1")=100
EndSub
2)Exitfunction
Functionff()
DimxAsInteger
Forx=1To100
Ifx=5Then
ExitFunction
EndIf
Nextx
ff=100
EndFunction
3)Exitfor
Sube2()
DimxAsInteger
Forx=1To100
Cells(1,1)=x
Ifx=5Then
ExitFor
EndIf
Nextx
Range("b1")=100
EndSub
4)Exitdo
Sube3()
DimxAsInteger
Do
x=x+1
Cells(1,1)=x
Ifx=5Then
ExitDo
EndIf
LoopUntilx=100
Range("b1")=100
EndSub
4.3.GOTO语句
4.3.1.Goto语句,跳转到指定的地方
Subt1()
DimregAsNewRegExp
DimxAsInteger
Dimsr
100:
sr=Application.InputBox("请输入数字","输入提示")
Withreg
.Global=True
.Pattern="^\d+$|False"
If.test(sr)Then
MsgBox("正确")
Else
GoTo100
EndIf
EndWith
EndSub
4.3.2.goSub..return,跳过去,再跳回来
Subt2()
DimxAsInteger
Forx=1To10
IfCells(x,1)Mod2=0ThenGoSub100
Nextx
ExitSub
100:
Cells(x,1)="偶数"
Return
EndSub
4.3.3.onerrorresumenext'遇到错误,跳过继续执行下一句
Subt3()
OnErrorResumeNext
DimxAsInteger
Forx=1To10
Cells(x,3)=Cells(x,2)*Cells(x,1)
Nextx
EndSub
4.3.4.onerrorgoto'出错时跳到指定的行数
Subt4()
OnErrorGoTo100
DimxAsInteger
Forx=1To10
Cells(x,3)=Cells(x,2)*Cells(x,1)
Nextx
ExitSub
100:
MsgBox"在第"&x&"行出错了"
EndSub
4.3.5.onerrorgoto0'取消错误跳转
Subt5()
OnErrorResumeNext
DimxAsInteger
Forx=1To10
Ifx>5ThenOnErrorGoTo0
Cells(x,3)=Cells(x,2)*Cells(x,1)
Nextx
ExitSub
EndSub
5.excel文件操作
5.1.excel文件和工作簿,excel文件就是excel工作簿,excel文件打开需要excel程的支持
5.2.Workbooks工作簿集合,泛指excel文件或工作簿
Workbooks("A.xls"),名称为A的excel工作簿
Subt1()
Workbooks("A.xls").Sheets
(1).Range("a1")=100
EndSub
workbooks
(2),按打开顺序,第二个打开的工作簿。
Subt2()
Workbooks
(2).Sheets
(2).Range("a1")=200
EndSub
ActiveWorkbook,当打开多个excel工作簿时,你正在操作的那个就是ActiveWorkbook(活动工作簿)
Thisworkbook,VBA程序所在的工作簿,无论你打开多少个工作簿,无论当前是哪个工作簿是活动的,thisworkbook就是指它所在的工作簿。
5.3.工作簿窗口
Windows("A.xls"),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。
Subt3()
Windows("A.xls").Visible=False
EndSub
Subt4()
Windows
(2).Visible=True
EndSub
5.4.应用
5.4.1.判断A.Xls文件是否存在
SubW1()
IfLen(Dir("d:
/A.xls"))=0Then
MsgBox"A文件不存在"
Else
MsgBox"A文件存在"
EndIf
EndSub
5.4.2.判断A.Xls文件是否打开
SubW2()
DimXAsInteger
ForX=1ToWindows.Count
IfWindows(X).Caption="A.XLS"Then
MsgBox"A文件打开了"
ExitSub
EndIf
Next
EndSub
5.4.3.excel文件新建和保存
SubW3()
DimwbAsWorkbook
Setwb=Workbooks.Add
wb.Sheets("sheet1").Range("a1")="abcd"
wb.SaveAs"D:
/B.xls"
EndSub
5.4.4.excel文件打开和关闭
Subw4()
DimwbAsWorkbook
Setwb=Workbooks.Open("D:
/B.xls")
MsgBoxwb.Sheets("sheet1").Range("a1").Value
wb.CloseFalse
EndSub
5.4.5.excel文件保存和备份
Subw5()
DimwbAsWorkbook
Setwb=ThisWorkbook
wb.Save
wb.SaveCopyAs"D:
/ABC.xls"
EndSub
5.4.6.excel文件复制和删除
SubW6()
FileCopy"D:
/ABC.XLS","E:
/ABCd.XLS"
Kill"D:
/ABC.XLS"
EndSub
6.Excel单元格选取
6.1.表示一个单元格(a1)
Subs()
Range("a1").Select
Cells(1,1).Select
Range("A"&1).Select
Cells(1,"A").Select
Cells
(1).Select
[a1].Select
EndSub
6.2.表示相邻单元格区域
Subd()'选取单元格a1:
c5
'Range("a1:
c5").Select
'Range("A1","C5").Select
'Range(Cells(1,1),Cells(5,3)).Select
'Range("a1:
a10").Offset(0,1).Select
Range("a1").Resize(5,3).Select
EndSub
6.3.表示不相邻的单元格区域
Subd1()
Range("a1,c1:
f4,a7").Select
'Union(Range("a1"),Range("c1:
f4"),Range("a7")).Select
EndSub
Subdd()'union示例
DimrgAsRange,xAsInteger
Forx=2To10Step2
Ifx=2ThenSetrg=Cells(x,1)
Setrg=Union(rg,Cells(x,1))
Nextx
rg.Select
EndSub
6.4.表示行
Subh()
'Rows
(1).Select
'Rows("3:
7").Select
'Range("1:
2,4:
5").Select
Range("c4:
f5").EntireRow.Select
EndSub
6.5.表示列
SubL()
'Columns
(1).Select
'Columns("A:
B").Select
'Range("A:
B,D:
E").Select
Range("c4:
f5").EntireColumn.Select'选取c4:
f5所在的行
EndSub
6.6.重置坐标下的单元格表示方法
Subcc()
Range("b2").Range("a1")=100
EndSub
6.7.表示正在选取的单元格区域
Subd2()
Selection.Value=100
EndSub
7.特殊单元格定位
7.1.已使用的单元格区域
Subd1()
Sheets("sheet2").UsedRange.Select
'wb.Sheets
(1).Range("a1:
a10").CopyRange("i1")
EndSub
7.2.某单元格所在的单元格区域
Subd2()
Range("c10").CurrentRegion.Select
EndSub
7.3.两个单元格区域共同的区域
Subd3()
Intersect(Columns("b:
c"),Rows("3:
5")).Select
EndSub
7.4.调用定位条件选取特殊单元格
Subd4()
Range("A1:
A6").SpecialCells(xlCellTypeBlanks).Select
EndSub
7.5.端点单元格
Subd5()
Range("a65536").End(xlUp).Offset(1,0)=1000
EndSub
Subd6()
Range(Range("b6"),Range("b6").End(xlToRight)).Select
EndSub
8.单元格的信息
8.1.单元格的值
Subx1()
Range("b10")=Range("c2").Value
Range("b11")=Range("c2").Text
Range("c10")="'"&Range("I3").Formula
EndSub
8.2.单元格的地址
Subx2()
WithRange("b2").CurrentRegion
[b12]=.Address
[c12]=.Address(0,0)
[d12]=.Address(1,0)
[e12]=.Address(0,1)
[f12]=.Address(1,1)
EndWith
EndSub
8.3.单元格的行列信息
Subx3()
WithRange("b2").CurrentRegion
[b13]=.Row
[b14]=.Rows.Count
[b15]=.Column
[b16]=.Columns.Count
[b17]=.Range("a1").Address
EndWith
EndSub
8.4.单元格的格式信息
Subx4()
WithRange("b2")
[b19]=.Font.Size
[b20]=.Font.ColorIndex
[b21]=.Interior.ColorIndex
[b22]=.Borders.LineStyle
EndWith
EndSub
8.5.单元格批注信息
Subx5()
[B24]=Range("I2").Comment.Text
EndSub
8.6.单元格的位置信息
Subx6()
WithRange("b3")
[b26]=.Top
[b27]=.Left
[b28]=.Height
[b29]=.Width
EndWith
EndSub
8.7.单元格的上级信息
Subx7()
WithRange("b3")
[b31]=.Parent.Name
[b32]=.Parent.Parent.Name
EndWith
EndSub
8.8.内容判断
Subx8()
WithRange("i3")
[b34]=.HasFormula
[b35]=.Hyperlinks.Count
EndWith
EndSub
9.单元格的格式
9.1.单元格的数字格式
'1判断是否为空单元格
Subd1()
[b1]=""
'IfRange("a1")=""Then
'IfLen([a1])=0Then
IfVBA.IsEmpty([a1])Then
[b1]="空值"
EndIf
EndSub
'