VBA80Word格式.docx
《VBA80Word格式.docx》由会员分享,可在线阅读,更多相关《VBA80Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
Sheets(n)表示按排列顺序,第n个工作表
ActiveSheet表示活动工作表,光标所在工作表
worksheet也表示工作表,但不包括图表工作表、宏工作表等。
3、单元格
cells所有单元格
Range("
单元格地址"
Cells(行数,列数)
Activecell正在选中或编辑的单元格
Selection正被选中或选取的单元格或单元格区域
一、VBA属性
VBA属性就是VBA对象所具有的特点
表示某个对象的属性的方法是
对象.属性=属性值
Subttt()
).Value=100
EndSub
Subttt1()
Sheets
(1).Name="
工作表改名了"
Subttt2()
Sheets("
Sheet2"
).Range("
).Value="
abcd"
EndSub
Subttt3()
A2"
).Interior.ColorIndex=3
二、VBA方法
VBA方法是作用于VBA对象上的动作
表示用某个方法作用于VBA的对象上,可以用下面的格式:
Subttt4()
牛排.做熟的程度:
=七成熟
).CopyRange("
Subttt5()
Sheet1.Movebefore:
=Sheets("
Sheet3"
)
VBA中的代码的基本结构与组成部分
VBA语句
一、宏程序语句
运行后可以完成一个功能
Subtest()'
开始语句
EndSub'
结束语句
二、函数程序语句
运行后可以返回一个值
Functionshcount()
shcount=Sheets.Count
EndFunction
三、在程序中应用的语句
Subtest2()
Calltest
Subtest3()
Forx=1To100'
fornext循环语句
Cells(x,1)=x
Nextx
VBA80_第03集.循环语句
If判断语句:
Sub判断1()'
单条件判断
IfRange("
).Value>
0Then
b1"
正数"
Else
负数或0"
EndIf
Sub判断2()'
多条件判断
ElseIfRange("
)=0Then
等于0"
B1"
)<
=0Then
负数"
Sub多条件判断2()
>
"
AndRange("
a2"
Then
a3"
)=Range("
)*Range("
IIf函数判断:
Sub判断4()
)=IIf(Range("
=0,"
负数或零"
"
select判断:
SelectCaseRange("
).Value
CaseIs>
0
CaseElse
EndSelect
CaseIs=0
0"
Sub判断3()
G"
MsgBox"
A-G"
EndSub判断范围:
Subif区间判断()
IfRange("
=1000Then
)=0.01
ElseIfRange("
=3000Then
)=0.03
)>
3000Then
)=0.05
EndIf
Subselect区间判断()
Case0To1000
Case1001To3000
3000
VBA80_第04集.判断语句
Subt1()
Range(“d2”)=Range(“b2”)*Range(“c2”)
Range(“d3”)=Range(“b3”)*Range(“c3”)
Range(“d4”)=Range(“b4”)*Range(“c4”)
Range(“d5”)=Range(“b5”)*Range(“c5”)
Range(“d6”)=Range(“b6”)*Range(“c6”)
Subt2()
DimxAsInteger
Forx=2To6Step1‘step1表示按1递增,如果省略了step的话表示默认是按1递增;
step2表示按2递增;
step-1表示递减,此时前面的语句值应该是从大到小。
Range(“d”&
x)=Range(“b”&
x)*Range(“c”&
x)
Subt3()
DimrgAsRange*定义一个单元格变量
ForEachrgInRange(“d2:
d18”)*单元格变量的取值为d2:
d18
Rg=rg.Offset(0,-1)*rgOffset(0,-2)*Offset(0,-1)表示其往左偏移了一个的单元格
Nextrg
例子:
Subs1()
DimrgAsRange
ForEachrgInRange(“a1:
b7,d5:
e9”)
Ifrg=“”Then
rg=0
EndIf
Nextrg
Subs2()
DimxAsInteger
Do
x=x+1
IfCells(x+1,1)<
Cells(x,1)+1Then
Cells(x,2)=“断点”
ExitDo
LoopUntilx=14
Subt4()
X=1
Do*do循环容易造成死循环,所以在使用时一定要注意。
Cells(x,4)=Cells(x,2)*Cells(x,3)
LoopUntilx=18*遇到死循环时,按住Ctrl+PauseBreak组合键可以强行结束循环
Subt5()
x=1
DoWhilex<
18
Loop
Endsub
VBA80_第05集.VBA变量
DimmAsInteger
变量
一、什么是变量?
所谓变量,就是可变的量。
就好象在内存中临时存放的一个小盒子,这个小盒子放的什么物体不固定。
Subt1()
DimXAsInteger'
x就是一个变量
ForX=1To10
Cells(X,1)=X
NextX
二、小盒子里可以放什么?
1放数字
如t1
2放文本
Subt2()
DimstAsString
DimXAsInteger
st=st&
Excel精英培训"
3放对象
Subt3()
Setrg=Range("
rg=100
4放数组
Subt4()
Dimarr(1To10)AsInteger,XAsInteger
arr(X)=X
NextX
三、变量的类型和声明
1变量的类型
详见帮助文件
2为什么要声明变量
3声明变量
dimpublic
四、变量的存活周期
1过程级变量:
过程结束,变量值释放
如t1
2模块级变量:
变量的值只在本模块中保持,工作簿关闭时随时释放
例5
Subt6()
m=1
Subt5()
MsgBoxm
m=7
3全局级变量:
在所有的模块中都可以调用,值会保存到EXCEL关闭时才会被释放。
public变量
Subt7()
MsgBoxqq
五变量的释放
一般情况下,过程级变量在过程运行结束后就会自动从内存中释放,而只有一些从外部借用的对象变量才需要使用set变量=nothing进行释放。
VBA80_第06集.函数与公式
OptionExplicit
一、在单元格中输入公式
1、用VBA在单元格中输入普通公式
Subt1()
d2"
=b2*c2"
Forx=2To6
Cells(x,4)="
=b"
&
x&
*c"
x
2、用VBA在单元格输入带引号的公式
Subt3()
c16"
=SUMIF(A2:
A6,"
b"
B2:
B6)"
遇到单引号就把单引号加倍
3、用VBA在单元格中输入数组公式
Subt4()
c9"
).FormulaArray="
=SUM(B2:
B6*C2:
C6)"
二、利用单元格公式返回值
d16"
)=Evaluate("
d9"
三、借用工作表函数
d8"
)=Application.WorksheeFunction.CountIf(Range("
A1:
A10"
),"
B"
四、利用VBA函数
C20"
)=VBA.InStr(Range("
a20"
E"
五、编写自定义函数
Functionwn()
wn=Application.Caller.Parent.Name
EndFunction
VBA80_第07集.VBE编辑器
一、VBE的窗口
1、工程窗口
A显示工作簿工作表对象
B窗体
C模块
D类模块
range("
)=10
对应工程窗口的对象和模板,显示其所具体的一些特征。
3、代码窗口
A注释文字的设置
B代码缩进的设置
C代码强制转行的设置
D代码运行和调试
逐句运行
设置断点
E对象列表框和过程列表框
4、立即窗口
立即窗口可以把运行过程中的值立即显示出来,主要用于程序的调试
Subd()
DimxAsInteger,stAsString
Forx=1To10
Cells(x,1)
Debug.Print"
第"
次运行结果:
st
5、本地窗口
在本地窗口中可以显示运行中断时对象信息、变量值、数组信息等。
Subd1()
DimxAsInteger,kAsInteger
k=k+Cells(x,1)
VBA80_第08集.VBA分支与End语句
一、END语句
作用:
强制退出所有正在运行的程序。
二、Exit语句
退出指定的语句
1、ExitSub
Sube1()
Forx=1To100
Cells(1,1)=x
Ifx=5Then
ExitSub
2、Exitfunction
Functionff()
ExitFunction
ff=100
EndFunction
3、Exitfor
Sube2()
ExitFor
Nextx
4、Exitdo
Sube3()
x=x+1
LoopUntilx=100
Goto语句,跳转到指定的地方
Dimsr
100:
sr=Application.InputBox("
请输入数字"
输入提示"
IfLen(sr)=0OrLen(sr)=5ThenGoTo100
gosub..return,跳过去,再跳回来
IfCells(x,1)Mod2=0ThenGoSub100
ExitSub
Cells(x,1)="
偶数"
Return
onerrorresumenext'
遇到错误,跳过继续执行下一句
OnErrorResumeNext
Cells(x,3)=Cells(x,2)*Cells(x,1)
onerrorgoto'
出错时跳到指定的行数
OnErrorGoTo100
在第"
行出错了"
onerrorgoto0'
取消错误跳转
Ifx>
5ThenOnErrorGoTo0