VBA80.docx

上传人:b****6 文档编号:7205667 上传时间:2023-05-11 格式:DOCX 页数:16 大小:18.97KB
下载 相关 举报
VBA80.docx_第1页
第1页 / 共16页
VBA80.docx_第2页
第2页 / 共16页
VBA80.docx_第3页
第3页 / 共16页
VBA80.docx_第4页
第4页 / 共16页
VBA80.docx_第5页
第5页 / 共16页
VBA80.docx_第6页
第6页 / 共16页
VBA80.docx_第7页
第7页 / 共16页
VBA80.docx_第8页
第8页 / 共16页
VBA80.docx_第9页
第9页 / 共16页
VBA80.docx_第10页
第10页 / 共16页
VBA80.docx_第11页
第11页 / 共16页
VBA80.docx_第12页
第12页 / 共16页
VBA80.docx_第13页
第13页 / 共16页
VBA80.docx_第14页
第14页 / 共16页
VBA80.docx_第15页
第15页 / 共16页
VBA80.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VBA80.docx

《VBA80.docx》由会员分享,可在线阅读,更多相关《VBA80.docx(16页珍藏版)》请在冰点文库上搜索。

VBA80.docx

VBA80

VBA80_第01集.宏与VBA

Subtest()

Range("a1")=100

EndSub

Sub输入100()

'输入100Macro

'宏由LenovoUser录制,时间:

2011-4-22

Range("A1").Select

ActiveCell.FormulaR1C1="100"

Range("B4").Select

EndSub

Sub删除A1的内容()

'删除A1的内容Macro

'宏由LenovoUser录制,时间:

2011-4-22

Range("A1").Select

Selection.ClearContents

EndSub

Sub输入()

Range("b2")=""

EndSub

VBA80_第02集.VBA中的语句、对象、方法与属性

'VBA对象

'VBA中的对象其实就是我们操作的具有方法、属性的excel中支持的对象

'Excel中的几个常用对象表示方法

'1、工作簿

'Workbooks代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿

'Workbooks("工作簿名称")

'ActiveWorkbook正在操作的工作簿

'ThisWorkBook'代码所在的工作簿

'2、工作表

''Sheets("工作表名称")

'Sheet1表示第一个插入的工作表,Sheet2表示第二个插入的工作表....

'Sheets(n)表示按排列顺序,第n个工作表

'ActiveSheet表示活动工作表,光标所在工作表

'worksheet也表示工作表,但不包括图表工作表、宏工作表等。

'3、单元格

'cells所有单元格

'Range("单元格地址")

'Cells(行数,列数)

'Activecell正在选中或编辑的单元格

'Selection正被选中或选取的单元格或单元格区域

'一、VBA属性

'VBA属性就是VBA对象所具有的特点

'表示某个对象的属性的方法是

'对象.属性=属性值

Subttt()

Range("a1").Value=100

EndSub

Subttt1()

Sheets

(1).Name="工作表改名了"

EndSub

Subttt2()

Sheets("Sheet2").Range("a1").Value="abcd"

EndSub

Subttt3()

Range("A2").Interior.ColorIndex=3

EndSub

'二、VBA方法

'VBA方法是作用于VBA对象上的动作

'表示用某个方法作用于VBA的对象上,可以用下面的格式:

Subttt4()

牛排.做熟的程度:

=七成熟

Range("A1").CopyRange("A2")

EndSub

Subttt5()

Sheet1.Movebefore:

=Sheets("Sheet3")

EndSub

'VBA中的代码的基本结构与组成部分

'VBA语句

'一、宏程序语句

'运行后可以完成一个功能

Subtest()'开始语句

Range("a1")=100

EndSub'结束语句

'二、函数程序语句

'运行后可以返回一个值

Functionshcount()

shcount=Sheets.Count

EndFunction

'三、在程序中应用的语句

Subtest2()

Calltest

EndSub

Subtest3()

Forx=1To100'fornext循环语句

Cells(x,1)=x

Nextx

EndSub

VBA80_第03集.循环语句

If判断语句:

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

IIf函数判断:

Sub判断4()

Range("a3")=IIf(Range("a1")<=0,"负数或零","负数")

EndSub

select判断:

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

Sub判断3()

IfRange("a3")<"G"Then

MsgBox"A-G"

EndIf

EndSub判断范围:

Subif区间判断()

IfRange("a2")<=1000Then

Range("b2")=0.01

ElseIfRange("a2")<=3000Then

Range("b2")=0.03

ElseIfRange("a2")>3000Then

Range("b2")=0.05

EndIf

EndSub

Subselect区间判断()

SelectCaseRange("a2").Value

Case0To1000

Range("b2")=0.01

Case1001To3000

Range("b2")=0.03

CaseIs>3000

Range("b2")=0.05

EndSelect

EndSub

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”)

EndSub

Subt2()

DimxAsInteger

Forx=2To6Step1‘step1表示按1递增,如果省略了step的话表示默认是按1递增;step2表示按2递增;step-1表示递减,此时前面的语句值应该是从大到小。

Range(“d”&x)=Range(“b”&x)*Range(“c”&x)

Nextx

EndSub

Subt3()

DimrgAsRange*定义一个单元格变量

ForEachrgInRange(“d2:

d18”)*单元格变量的取值为d2:

d18

Rg=rg.Offset(0,-1)*rgOffset(0,-2)*Offset(0,-1)表示其往左偏移了一个的单元格

Nextrg

EndSub

例子:

Subs1()

DimrgAsRange

ForEachrgInRange(“a1:

b7,d5:

e9”)

Ifrg=“”Then

rg=0

EndIf

Nextrg

EndSub

Subs2()

DimxAsInteger

Do

x=x+1

IfCells(x+1,1)<>Cells(x,1)+1Then

Cells(x,2)=“断点”

ExitDo

EndIf

LoopUntilx=14

EndSub

Subt4()

X=1

Do*do循环容易造成死循环,所以在使用时一定要注意。

x=x+1

Cells(x,4)=Cells(x,2)*Cells(x,3)

LoopUntilx=18*遇到死循环时,按住Ctrl+PauseBreak组合键可以强行结束循环

EndSub

Subt5()

x=1

DoWhilex<18

x=x+1

Cells(x,4)=Cells(x,2)*Cells(x,3)

Loop

Endsub

VBA80_第05集.VBA变量

DimmAsInteger

'变量

'一、什么是变量?

'所谓变量,就是可变的量。

就好象在内存中临时存放的一个小盒子,这个小盒子放的什么物体不固定。

Subt1()

DimXAsInteger'x就是一个变量

ForX=1To10

Cells(X,1)=X

NextX

EndSub

'二、小盒子里可以放什么?

'1放数字

'如t1

'2放文本

Subt2()

DimstAsString

DimXAsInteger

ForX=1To10

st=st&"Excel精英培训"

NextX

EndSub

'3放对象

Subt3()

DimrgAsRange

Setrg=Range("a1")

rg=100

EndSub

'4放数组

Subt4()

Dimarr(1To10)AsInteger,XAsInteger

ForX=1To10

arr(X)=X

NextX

EndSub

'三、变量的类型和声明

'1变量的类型

'详见帮助文件

'2为什么要声明变量

'3声明变量

'dimpublic

'四、变量的存活周期

'1过程级变量:

过程结束,变量值释放

'如t1

'2模块级变量:

变量的值只在本模块中保持,工作簿关闭时随时释放

'例5

Subt6()

m=1

EndSub

Subt5()

MsgBoxm

m=7

EndSub

'3全局级变量:

在所有的模块中都可以调用,值会保存到EXCEL关闭时才会被释放。

'public变量

Subt7()

MsgBoxqq

EndSub

'五变量的释放

'一般情况下,过程级变量在过程运行结束后就会自动从内存中释放,而只有一些从外部借用的对象变量才需要使用set变量=nothing进行释放。

VBA80_第06集.函数与公式

OptionExplicit

'一、在单元格中输入公式

'1、用VBA在单元格中输入普通公式

Subt1()

Range("d2")="=b2*c2"

EndSub

Subt2()

DimxAsInteger

Forx=2To6

Cells(x,4)="=b"&x&"*c"&x

Nextx

EndSub

'2、用VBA在单元格输入带引号的公式

Subt3()

Range("c16")="=SUMIF(A2:

A6,""b"",B2:

B6)"'遇到单引号就把单引号加倍

EndSub

'3、用VBA在单元格中输入数组公式

Subt4()

Range("c9").FormulaArray="=SUM(B2:

B6*C2:

C6)"

EndSub

'二、利用单元格公式返回值

Subt5()

Range("d16")=Evaluate("=SUMIF(A2:

A6,""b"",B2:

B6)")

Range("d9")=Evaluate("=SUM(B2:

B6*C2:

C6)")

EndSub

'三、借用工作表函数

Subt6()

Range("d8")=Application.WorksheeFunction.CountIf(Range("A1:

A10"),"B")

EndSub

'四、利用VBA函数

Subt7()

Range("C20")=VBA.InStr(Range("a20"),"E")

EndSub

'五、编写自定义函数

Functionwn()

wn=Application.Caller.Parent.Name

EndFunction

VBA80_第07集.VBE编辑器

'一、VBE的窗口

'1、工程窗口

'A显示工作簿工作表对象

'B窗体

'C模块

'D类模块

'range("a1")=10

'对应工程窗口的对象和模板,显示其所具体的一些特征。

'3、代码窗口

'A注释文字的设置

'B代码缩进的设置

'C代码强制转行的设置

'D代码运行和调试

'逐句运行

'设置断点

'E对象列表框和过程列表框

'4、立即窗口

'立即窗口可以把运行过程中的值立即显示出来,主要用于程序的调试

Subd()

DimxAsInteger,stAsString

Forx=1To10

st=st&Cells(x,1)

Debug.Print"第"&x&"次运行结果:

"&st

Nextx

EndSub

'5、本地窗口

'在本地窗口中可以显示运行中断时对象信息、变量值、数组信息等。

Subd1()

DimxAsInteger,kAsInteger

Forx=1To10

k=k+Cells(x,1)

Nextx

EndSub

VBA80_第08集.VBA分支与End语句

OptionExplicit

'一、END语句

'作用:

强制退出所有正在运行的程序。

'二、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

OptionExplicit

'Goto语句,跳转到指定的地方

Subt1()

DimxAsInteger

Dimsr

100:

sr=Application.InputBox("请输入数字","输入提示")

IfLen(sr)=0OrLen(sr)=5ThenGoTo100

EndSub

'gosub..return,跳过去,再跳回来

Subt2()

DimxAsInteger

Forx=1To10

IfCells(x,1)Mod2=0ThenGoSub100

Nextx

ExitSub

100:

Cells(x,1)="偶数"

Return

EndSub

'onerrorresumenext'遇到错误,跳过继续执行下一句

Subt3()

OnErrorResumeNext

DimxAsInteger

Forx=1To10

Cells(x,3)=Cells(x,2)*Cells(x,1)

Nextx

EndSub

'onerrorgoto'出错时跳到指定的行数

Subt4()

OnErrorGoTo100

DimxAsInteger

Forx=1To10

Cells(x,3)=Cells(x,2)*Cells(x,1)

Nextx

ExitSub

100:

MsgBox"在第"&x&"行出错了"

EndSub

'onerrorgoto0'取消错误跳转

Subt5()

OnErrorResumeNext

DimxAsInteger

Forx=1To10

Ifx>5ThenOnErrorGoTo0

Cells(x,3)=Cells(x,2)*Cells(x,1)

Nextx

ExitSub

EndSub

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2