《VBA编程语言》PPT课件.ppt
- 文档编号:1887681
- 上传时间:2023-05-02
- 格式:PPT
- 页数:109
- 大小:2.21MB
《VBA编程语言》PPT课件.ppt
《《VBA编程语言》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VBA编程语言》PPT课件.ppt(109页珍藏版)》请在冰点文库上搜索。
第8章VBA编程语言,学而不思则罔,思而不学则殆。
全体编者,ComputeCenter,QiqiharUniversity,本章内容提要:
VBA概述VBA编程基础VBA基本控制结构VBA模块面向对象程序设计,一、VBA概述,1、VBA介绍VBA是(VisualBasicforApplication)是MicrosoftOffice系列软件的内置编程语言。
Basic语言Visual可视化的程序设计2、与宏的比较在Access中,VBA与宏的作用类似,只是宏由系统给定,而VBA是需要用户自己编写程序。
但在完成下列操作时,必须使用VBA。
数据库的移植建立用户自定义函数,3.VBA编程环境,VBE(VisualBasicEditor)打开VBE窗口的方法:
独立程序模块“数据库”窗口“模块”对象选项“新建”按钮菜单栏“工具”“宏”“VisualBasic编辑器”命令项绑定型程序模块VBE窗口的组成标准工具栏、工程窗口、属性窗口代码窗口,操作演示,3.VBA编程环境,设计人员可以在代码窗口中进行代码编写、修改与调试等处理。
“视图”菜单:
对象浏览器立即窗口本地窗口监视窗口在标准模块中调试程序示例,二、VBA编程基础,数据类型常量和变量运算符与表达式常用内置函数的使用方法数组,1.数据类型,VBA提供的基本数据类型主要有字符串型数据和数值型数据,此外还提供了货币、对象、变体等数据类型。
VBA共有12种数据类型。
此外用户还可以根据以下类型用Type自定义数据类型。
有效使用数据类型,应该尽量明确变量的具体数据类型。
如:
DimXAsInteger,VBA基本数据类型,2.常量和变量,常量:
在程序运行过程中保持不变的量。
常量的种类:
直接常量,如:
344、3.14159、-23等;符号常量,如:
constpi=3.14;固有常量,如:
acForm、adAddNew、vbCuruency等;系统定义常量,如True、False、Null等。
常量的数据类型参考-VBA基本数据类型符号常量的声明和使用:
const符号常量名=常数,2.常量和变量,变量:
程序运行过程中,值可以改变的量。
变量的类型参考-VBA基本数据类型。
变量的定义:
使用类型符定义,如:
BookNumber%=1234【例8.6】使用Dim语句定义,如:
DimIAsinteger【例8.7】使用DefType语句,如:
DefInta,b,c,e-h【例8.8】变量的命名同标识符的命名,思考:
变量与常量的区别?
SubConstSample()ConstPIAsSingle=3.1415926PI=3.14错误,PI的值不能改变r%=5S!
=PI*r2EndSub,3.运算符与表达式,VBA中基本的运算符有五种:
算术运算符、关系运算符、逻辑运算符、字符串运算符、对象运算符。
表达式是由运算符、函数和数据等内容组合而成。
根据运算符的不同,可以将表达式分成以下几类:
算术表达式、关系表达式、逻辑表达式、字符串表达式和对象表达式。
算术运算符与表达式,算术运算符+加、-减、*乘、/除整除、MOD求余、乘方例如:
3+5、5-4、5*4、4/643=1、7MOD4=3、23=8运算符的优先级:
括号取负乘方*/MOD+-算术表达式-4+3*6MOD5(24),关系运算符和表达式,关系运算符:
大于、不等于=大于等于、6(true或1)4-20(false或0),逻辑运算符与表达式,逻辑运算符:
And逻辑与、OR逻辑或、Not逻辑非逻辑运算结果是:
真(true或-1表示)或假(false或0表示)优先级:
NotAndOr逻辑运算的运算规则是:
逻辑运算的运算规则,例如:
2+34And622-49Not4+510,字符连接符与表达式,字符连接符:
+:
连接字符串&:
可以将不同类型变量连接成字符串例如:
a$=“123”:
b$=“abc”c$=a$+b$(或c$=a$&b$)则C$的值为“123abc”思考:
C&1和C+1是否正确?
对象运算符与表达式,对象运算符:
!
对象引用符.对象属性引用符例如:
Forms!
学生成绩单打开学生成绩单窗体Command1.Caption引用命令按钮Command1的Caption属性,例:
表达式书写规则,其VBA表达式为:
(-b+Sqr(b2-4*a*c)/(2*a)书写规则说明:
括号要匹配乘号不能省略表达式从左到右书写使用表达式生成器创建表达式,操作演示,如何使用表达式,表达式及其说明,4.常用内置函数的使用方法,内置函数的调用格式:
函数名(参数)例如:
求Sin(30)VBA表达式为:
Sin(3.14*30/180)根据函数返回值的类型,可以将函数分为:
数值型函数字符串函数日期/时间函数类型转换函数,5.数组,数组是由一组具有相同数据类型的变量构成的集合。
数组定义格式为:
Dim数组名(下标下界to下标上界限,下标下界to下标上界限)As数据类型例如【例8.9】DimA(3)asIntegerDimB(3,3)asInteger,注意:
OptionBasen的作用,B(0,1),数组的类型,按数组元素个数是否可变分为:
固定数组动态数组动态数组的定义方法:
先使用Dim来声明数组再用ReDim来指定数组元素个数加保留字Preserve来保留以前的值否则,使用ReDim后,数组元素的值会被重新初始化为默认值。
数组的使用,数组的赋值例:
定义动态数组,并求各元素的和。
PrivatesubSumArray()DimS,A()asintegerRedimA
(2)A(0)=1:
A
(1)=2RedimpreserveA(3)A
(2)=3S=A(0)+A
(1)+A
(2)EndSub,如果去掉preserve关键词结果会如何,小结,本部分主要介绍了VBA及其编程环境、VBA的基本数据类型、常量和变量、运算符与表达式、常用内置函数的使用方法和数组的基本概念。
其中,重点内容是VBA的基本数据类型和运算符与表达式;难点内容是常用内置函数的使用方法和数组的基本概念。
课堂练习,课堂练习1、VBE窗口的基本组成及其打开方法?
2、常量与变量的区别?
3、利用VBA语法书写表达式?
三、VBA基本控制结构,程序语句程序语句的书写格式程序的基本语句VBA程序的基本控制结构有三种:
顺序结构选择结构循环结构,1.程序语句的书写格式,VBA程序语句有自己的书写格式,主要规定如下:
不区分字母的大小写。
在书写标点符号和括号时,要用西文格式。
在语句中的关键字的首字母均转换成大写,其余字母转换成小写。
自定义的变量和过程名,以第一次定义的格式为准。
续行的行尾加上续行符(空格+下划线“_”)。
在一行上写多条语句,语句间用冒号“:
”分隔。
输入一行语句并按Enter键,VBA会自动进行语法检查,如果语句存在错误,该行代码以红色提示(或伴有错误信息提示)。
2.程序的基本语句,程序的功能是靠执行语句来实现的VBA中的几个常用的基本语句注释语句声明语句Option语句赋值语句With语句OnError语句,注释语句、声明语句和option语句,注释语句使用Rem语句或用单引号“”实现声明语句声明语句用于命名和定义过程、变量、数组或常量例如,dimaasintegeroption语句Option语句在模块的开始部分使用,用于对环境状态进行设置。
OptionExplicitOptionBase0|1,例如:
Str1=图书馆借阅管理系统Str1变量记下图书馆借阅管理系统的名称Str2=Access数据库基础教程RemStr2变量记下Access数据库基础教程字符串,赋值语句,功能:
给变量或常量指定一个值或表达式。
格式:
let变量名=表达式对象名.属性名=表达式(若对象名省略,则默认对象为当前窗体或报表)【例8.15】赋值语句举例,Subprogram_clause()BookName=Access数据库基础教程BookPrice=23.40LetBookNumber=1200BookTotalPrice=BookNumber*BookPriceForm1.Caption=图书馆借阅管理系统Text1.text=Text2.textEndSub,With语句,With语句对象执行一系列的语句,而不用重复指出对象的名称。
格式:
With对象.语句EndWith【例8.16】改变Command1按钮的属性。
Subprogram2()WithCommand1.Caption=确定.Top=500.Enabled=True.FontSize=14EndWithEndSub,OnError语句,常见的错误主要发生在以下3个方面:
语法错误运行错误逻辑错误构造错误陷阱的常用语句:
OnErrorGoToOnErrorGoTo标号OnErrorResumeNextOnErrorGoTo0Err对象Error()函数和Error语句,【例8.17】错误捕捉与处理举例。
PrivateSubMyproc()OnErrorGoToErrlabelErrlabel:
EndSub,3.顺序结构,常用的几个输入输出方法:
输入:
使用文本框使用函数InputBox格式:
InputBox(提示信息,标题,默认值,对话框水平位置,对话框垂直位置)输出:
使用文本框使用函数MsgBox格式:
MsgBox(显示的信息,规定显示按钮数量,标题),例:
摄氏温度转换为华氏温度,程序代码如下:
SubCtoF()DimCasinteger,FasintegerC=inputbox(“请输入摄氏温度”)F=9/5*C+32Msgbox(f)Endsub,操作演示,4.选择结构,
(1)行if语句格式:
ifthen条件:
是关系表达式或逻辑表达式。
语句:
是可以执行的任何操作。
功能:
如果条件成立,执行,如果条件不成立,且else子句没有省略,则执行。
例:
计算表达式测试程序1,程序代码如下:
Subtest()Dimx,yAsSinglex=InputBox(“请输入数据:
”)Ifx0theny=x2+x+1elsey=x2+5*x-1Debug.printyEndSub,操作演示,例:
使用控件编程,PrivateSub命令1_Click()单击确定按钮DimxAsSingle文本0.SetFocus:
x=文本0.TextIfx0Then文本0.Text=x2+x+1Else文本0.Text=x2+x1EndSubPrivateSub命令2_Click()单击重新输入按钮文本0.SetFocus:
文本0.Text=EndSub,操作演示,
(2)块if语句,格式:
ifthenelseendif,用块if语句改写上例程序1,Subtest()Dimx,yAsSinglex=InputBox(“请输入数据:
”)Ifx0Theny=x2+x+1Elsey=x2+x1EndifDebug.printyEndsub,操作演示,用块if语句改写上例程序2,PrivateSub命令0_Click()单击确定按钮DimxAsSingle文本0.SetFocusx=文本0.TextIfx0Then文本0.Text=x2+x+1Else文本.Text=x2+x1EndifEndSub,操作演示,例:
输入三个数,按由小到大顺序排序,输出排序后的数。
测试编程:
利用模块的过程,输入三个数,按由小到大顺序排序,输出显示排序后的数。
事件驱动编程:
将三个数分别输入到三个文本框中,单击“排序”按钮后,三个数按由大到小的顺序排序;单击“重新输入”按钮后,清空文本框,以便重新输入。
完成步骤:
创建界面设置控件属性编写代码,操作演示,利用模块的过程编程:
SubSort()Dima,b,c,tAsSinglea=Val(InputBox(请输入数据a:
)b=Val(InputBox(请输入数据b:
)c=Val(InputBox(请输入数据c:
)IfabThent=a:
a=b:
b=tEndIfIfacThent=a:
a=c:
c=tEndIfIfbcThent=b:
b=c:
c=tEndIfMsgBoxa&,&b&,&cEndSub,利用事件驱动编程:
第一步,创建界面:
利用事件驱动编程:
第二步,设置控件属性,利用事件驱动编程:
第三步,编写代码Command1_Click()事件过程代码接收数据比较数据并排序输出数据Command2_Click()事件过程代码清空文本框,Command1_Click()过程代码,Dima,b,c,tAsDouble接收数据Text1.SetFocus:
a=Val(Text1.Text)Text2.SetFocus:
b=Val(Text2.Text)Text3.SetFocus:
c=Val(Text3.Text)比较数据并排序IfabThent=a:
a=b:
b=tIfacThent=a:
a=c:
c=tIfbcThent=b:
b=c:
c=t输出数据Text1.SetFocus:
Text1.Text=LTrim(Str(a)Text2.SetFocus:
Text2.Text=LTrim(Str(b)Text3.SetFocus:
Text3.Text=LTrim(Str(c),Command2_Click()过程代码,清空文本框Text3.SetFocusText3.Text=Text2.SetFocusText2.Text=Text1.SetFocusText1.Text=,(3)selectcase语句,格式:
SelectCaseCaseCaseCaseElseEndSelect功能:
当测试表达式等于表达式n时,程序就执行该表达式下的语句组;如果没有等于测试表达式的表达式,则执行CaseElse后的语句组。
Case项后面的值有三种形式:
可以是单个值或几个值。
如果是多个值,各值之间用逗号分隔。
如:
case1,3,5表示1,3,5三个数可以用关键字to来指定范围。
如:
case3to5表示3到5的数可以是连续的一段值。
这时要在Case后面加Is。
如:
caseIs3表示大于3的所有数,例:
设y表示运费,x表示吨数,问题描述:
创建一个窗体,包括:
两个标签、两个文本框、两个命令按钮。
输入货物吨数时,单击“计算”按钮,显示出运费;单击“清除”按钮,清空两个文本框。
操作演示,5.循环结构,for循环结构Do循环结构While循环Goto语句循环嵌套,
(1)for循环结构,格式:
for=tostep步长循环体next循环变量功能:
循环变量赋初值;循环变量与终值比较,即:
循环变量是否超过终值?
若超过,则终止循环;若没超过,则执行循环体,然后,循环变量增加一个步长。
例:
计算s=1+2+3+100,使用For循环结构SubSum_For()DimnAsInteger,sAsIntegerDimtAsIntegers=0Forn=1To100Step1s=s+nNextnDebug.Print1+2+3+100=,sEndSub,
(2)Do循环结构,5种格式:
例:
计算s=1+2+3+100,使用Do循环结构SubSum_Do()DimnAsInteger,sAsIntegerDimtAsIntegers=0DoWhilen=100s=s+nn=n+1LoopDebug.Print1+2+3+100=,sEndSub,(3)While循环,格式:
While条件Wend功能:
当条件为真时,执行循环体中的语句,遇到Wend时,程序跳转到While处,继续判断条件,直到条件为假,退出循环,执行Wend后的语句。
【例8.27】求N!
。
【例8.27】求N!
程序代码如下:
PublicSub阶层N()Dimn,iAsIntegern=InputBox(请输入一个整数:
)i=1total=1Whilei=ntotal=total*ii=i+1WendMsgBoxN的阶层为:
&totalEndSub,(4)goto语句,格式:
GoTo标号功能:
程序执行过程中,遇到GoTo语句,会无条件地转到其后的“标号”位置,并从该位置继续执行程序。
说明:
标号需英文开头,并后加“:
”一般与if语句配合使用【例8.28】求1100之和。
【例8.28】求1100之和。
程序代码如下:
PublicSubcc()Dimi,sum1AsIntegersum1=0i=1label:
sum1=sum1+ii=i+1Ifi=100ThenGoTolabelEndIfMsgBoxsum1EndSub,(5)循环嵌套,格式:
For循环变量=初值To终值step步长值For循环变量=初值To终值step步长值ExitForNext循环变量ExitForNext循环变量,While条件Wend,【例8.30】输出正三角形,程序代码如下:
PrivateSub三角形()Fori=1To8Forj=1To8-iDebug.Print;在立即窗口输出NextjFork=1To2*i-1Debug.Print*;NextkDebug.PrintNextiEndSub,小结,本部分主要讲述了VBA的基本语句和基本的语句控制结构,主要包括顺序、选择、循环三种。
其中,重点内容是选择和循环结构;难点内容是循环结构。
课堂练习,课堂作业1、AccessVBA有哪些程序控制语句?
2、选择结构的几种形式?
3、for循环的结构?
4、do循环的5种格式?
彼此之间的区别?
四.VBA模块,1、模块对象Access数据库7个对象之一,其实质就是没有界面的VBA程序。
模块一般是由声明、语句和过程组成的集合,作为一个已命名的单元存储在一起,并对VBA代码进行组织。
模块可分为两种基本类型:
类模块标准模块建立一个标准模块示例,2.过程,过程由VBA语句组成,是一段相对独立的代码。
过程将程序分割成较小的程序单元,这样就可以简化程序设计任务。
创建过程过程可以分为:
Sub过程(子过程)事件过程Function过程(函数),Sub过程,定义Sub过程的格式:
Private|Public|StaticSub(参数表)语句块EndSubSub过程的调用,两种方式:
Call过程名(实际参数表)直接使用过程名调用例如,Hello过程,事件过程,事件过程是与对象的事件相关联的程序。
为窗体、报表或控件的事件来编写事件程序,这样当该事件被引发时便会执行其事件程序来完成所需的处理。
例:
在窗体上建立一个“获得当前时间”按钮,按下按钮便能执行VBA程序代码来显示当前时间。
方法一:
利用窗体的控件中的事件标签方法二:
利用“视图”菜单中的“代码”命令,操作演示,Function过程,定义Function过程的格式:
Private|Public|StaticFunction(参数表)As类型EndFunction调用Function过程与使用VBA内部函数相同例如,GetCurDate过程,模块与过程,注意:
过程不是Access的一个独立对象,不能单独保存,只能存在于模块中。
sub,Function,3.参数传递,在调用过程中,主调过程和被调过程之间的数据传递。
即主调过程的实参传递给被调过程的形参,然后执行被调过程。
实参向形参的数据传递有2种方式:
值传递(ByVal)地址传递(ByRef)*说明:
值传递时,形参的变化不影响实参;地址传递时,形参与实参使用相同的存储单元。
【例8.34】参数传递示例,问题描述:
创建有参子过程Test(),通过主调过程Main_Click()调用,观察实参值的变化。
程序代码:
被调子过程Test()SubTest(ByRefxAsInteger)形参x说明为传址形式的整型量x=x+10改变形参x的值EndSub主调过程Main_click()PrivateSubMain_Click()DimnAsInteger定义整型变量nn=6变量n赋初值6CallTest(n)Msgboxn显示n值EndSub,4.过程和变量的作用域,过程或变量可被访问的范围称为过程或变量的作用域。
过程的作用域:
模块级(使用Private)全局级(使用Public)变量的作用域表8.2局部变量【例8.35】模块变量【例8.36】全局变量【例8.37】,五、面向对象程序设计,1、理解面向对象编程:
面向对象是观察世界和编写计算机程序的自然方式。
优点:
结构清晰完整,数据独立、易于管理缺点:
性能方面要做些牺牲2、理解类与对象:
在面向对象的方法中,类是具有共同属性、共同行为方法的对象的抽象。
一个对象代表应用程序中的一个元素窗体或是其上的按钮、标签和文本框等,对象三要素,一个对象通过属性、方法和事件来描述。
属性是指一个对象所具备的特征比如:
按钮控件的Caption属性方法是指对象可以执行的动作比如:
文本框控件可以SetFocus方法事件是指对象所能检测的动作比如,按钮的Click事件,3.对象声明和引用,
(1)对象的声明声明对象变量的语法格式:
Dim对象变量AsNew对象类说明:
使用new,则不必使用Set引用特定对象Set对象变量=New对象表达式例如,【例8.38】DimmyFormAsNewFormDimmyTextAsTextBoxSetmyText=NewTextBox,
(2)对象的使用,对象引用一般格式:
!
.|引用运算符:
!
和.例如:
Forms!
登陆窗体!
text0.text=“1”DoCmd.CloseSELECT学生表.姓名FROM学生表,对象引用规则注意事项,引用规则:
引用窗体或报表必须从集合开始。
例如:
Forms!
窗体1.CaptionReports!
学生成绩!
学分+10Reports!
学生成绩!
学分.VisibleForms!
窗体1!
Label1.FontNameLabel1.FontName(当前窗体),改变对象的属性设置,例如:
Forms!
窗体1.Caption=Date&Space
(2)Label1.FontName=“隶书”Label1.FontBold=TrueLabel1.FontSize=18Label1.FontItalic=TrueText0.FontColor=255Text0.Height=Text0.Width*0.5,4.Application的对象模型,VBA使用Application对象操作当前活动的窗体、报表、数据访问页及它们所包含的控件。
Application对象层次关系如图Application对象Form对象、Forms集合和Control对象、Controls集合DoCmd对象,
(1)Application对象,Application对象引用活动的Access应用程序创建Application类的新实例:
DimappAccessAsObjectSetappAccess=CreateObject(Access.Application)例如,【例8.40】,SubGetAccessData()DimstrDBAsStringDimappAccessAsAccess.ApplicationStrDB=”C:
ProgramFilesMicrosoftOfficeOffice11SamplesNorwind.mdb”AppAccess
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA编程语言 VBA 编程 语言 PPT 课件