Access数据库系统与应用-第8章-VBA编程语言课件_第1页
Access数据库系统与应用-第8章-VBA编程语言课件_第2页
Access数据库系统与应用-第8章-VBA编程语言课件_第3页
Access数据库系统与应用-第8章-VBA编程语言课件_第4页
Access数据库系统与应用-第8章-VBA编程语言课件_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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自定义数据类型。有效使用数据类型,应该尽量明确变量的具体数据类型。如:DimXAsIntegerVBA基本数据类型

数据类型说明数据类型类型标识符占用字节字符串型String$字符长度(0-65400)字节型Byte无1布尔型Boolean无2整数型Integer%2长整数型Long&4单精度型Single!4双精度型Double#8小数点型Decimal无14日期型Date无8货币型Currency@8变体型Variant无以上任意类型,可变对象型Object无4自定义类型Type…EndType无由定义内容决定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语句,如:DefInt

a,b,c,e-h【例8.8】变量的命名同标识符的命名思考:变量与常量的区别?SubConstSample()ConstPIAsSingle=3.1415926PI=3.14’错误,PI的值不能改变

r%=5

S!=PI*r^2EndSub3.运算符与表达式VBA中基本的运算符有五种:算术运算符、关系运算符、逻辑运算符、字符串运算符、对象运算符。表达式是由运算符、函数和数据等内容组合而成。根据运算符的不同,可以将表达式分成以下几类:算术表达式、关系表达式、逻辑表达式、字符串表达式和对象表达式。算术运算符与表达式算术运算符+加、-减、*乘、/除

\整除、MOD求余、^乘方例如:3+5、5-4、5*4、4/64\3=1、7MOD4=3、2^3=8运算符的优先级:括号>取负>乘方>*>/>\>MOD>+>-算术表达式-4+3*6MOD5^(2\4)关系运算符和表达式关系运算符:>大于、<小于、=等于、<>不等于>=大于等于、<=小于等于关系运算结果是:真(true或-1表示)或假(false或0表示)例如:4+3>6(true或–1)4-2<0(false或0)逻辑运算符与表达式逻辑运算符:And逻辑与、OR逻辑或、Not逻辑非逻辑运算结果是:真(true或-1表示)或假(false或0表示)优先级:Not>And>Or逻辑运算的运算规则是:逻辑运算的运算规则例如:2+3>4And6>22-4<0Or6+3>9Not4+5>10AndTruefalseTruefalseTruefalseFalsefalseOrTruefalseTruefalseTrueTrueTruefalseNotTruefalseFalseTrue字符连接符与表达式字符连接符:+:连接字符串&:可以将不同类型变量连接成字符串例如:a$=“123”:b$=“abc”c$=a$+b$(或c$=a$&b$)则C$的值为“123abc”思考:C&1和C+1是否正确?对象运算符与表达式对象运算符:!对象引用符.对象属性引用符例如:Forms![学生成绩单]'打开学生成绩单窗体Command1.Caption '引用命令按钮Command1的Caption属性例:表达式书写规则其VBA表达式为:(-b+Sqr(b^2-4*a*c))/(2*a)书写规则说明:括号要匹配乘号不能省略表达式从左到右书写使用表达式生成器创建表达式操作演示如何使用表达式表达式及其说明

表达式说明=[数学成绩]+[英语成绩]计算报表上两个文本框控件中的值之和Date()将表中字段的默认值设置为当前日期总价:[订单].单价*[数量]创建查询中的计算字段Between#1/1/2005#And#12/31/2005#用于输入查询中“日期/时间”字段的条件=[订单]!小计返回“订单”窗体的“小计”控件的值>0设置表中数值字段的有效性规则4.常用内置函数的使用方法内置函数的调用格式:函数名([参数])例如:求Sin(30°)VBA表达式为:Sin(3.14*30/180)根据函数返回值的类型,可以将函数分为:数值型函数字符串函数日期/时间函数类型转换函数5.数组数组是由一组具有相同数据类型的变量构成的集合。数组定义格式为:Dim数组名([下标下界to]下标上界限[,[下标下界to]下标上界限])As数据类型例如【例8.9】DimA(3)asIntegerDimB(3,3)asInteger注意:OptionBasen的作用A(0)A(1)A(2)012012012B(0,1)数组的类型按数组元素个数是否可变分为:固定数组动态数组动态数组的定义方法:先使用Dim来声明数组再用ReDim来指定数组元素个数加保留字Preserve

来保留以前的值否则,使用ReDim后,数组元素的值会被重新初始化为默认值。数组的使用数组的赋值例:定义动态数组,并求各元素的和。PrivatesubSumArray()DimS,A()asinteger

RedimA(2)A(0)=1:A(1)=2

RedimpreserveA(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=1200

BookTotalPrice=

BookNumber*

BookPriceForm1.Caption="图书馆借阅管理系统"Text1.text=Text2.textEndSubWith语句With语句对象执行一系列的语句,而不用重复指出对象的名称。格式:With对象

.语句EndWith【例8.16】改变Command1按钮的属性。Subprogram2()WithCommand1 .Caption="确定" .Top=500 .Enabled=True .FontSize=14EndWithEndSubOnError语句常见的错误主要发生在以下3个方面:语法错误运行错误逻辑错误构造错误陷阱的常用语句:OnErrorGoToOnErrorGoTo

标号OnErrorResumeNextOnErrorGoTo0Err对象Error()函数和Error语句【例8.17】错误捕捉与处理举例。PrivateSubMyproc()OnErrorGoTo

Errlabel <程序语句>Errlabel:

<错误处理代码>EndSub3.顺序结构常用的几个输入输出方法:输入:使用文本框使用函数InputBox格式:InputBox(提示信息,[标题][,默认值][,对话框水平位置][,对话框垂直位置])输出:使用文本框使用函数MsgBox格式:MsgBox(显示的信息[,规定显示按钮数量][,标题])例:摄氏温度转换为华氏温度程序代码如下:SubCtoF()DimCasinteger,Fasinteger

C=inputbox(“请输入摄氏温度”)F=9/5*C+32

Msgbox(f)Endsub操作演示4.选择结构(1)行if语句格式:if<条件表达式>then<语句1>条件:是关系表达式或逻辑表达式。语句:是可以执行的任何操作。功能:如果条件成立,执行<语句1>,如果条件不成立,且else子句没有省略,则执行<语句2>。表达式语句非0=0例:计算表达式测试程序1程序代码如下:Subtest()Dimx,yAsSingle

x=InputBox(“请输入数据:”)

Ifx>0theny=x^2+x+1elsey=x^2+5*x-1

Debug.printyEndSub操作演示例:使用控件编程PrivateSub命令1_Click()‘单击确定按钮

DimxAsSingle

文本0.SetFocus:x=文本0.TextIfx>0Then文本0.Text=x^2+x+1Else文本0.Text=x^2+x–1EndSubPrivateSub命令2_Click()‘单击重新输入按钮文本0.SetFocus:文本0.Text=""EndSub操作演示(2)块

if语句格式:

if<条件表达式>then<语句组1>[else<语句组2>]

endif表达式语句组1语句组2非0=0用块if语句改写上例程序1Subtest()Dimx,yAsSingle

x=InputBox(“请输入数据:”)Ifx>0Theny=x^2+x+1Elsey=x^2+x–1Endif

Debug.printyEndsub操作演示用块if语句改写上例程序2PrivateSub命令0_Click()‘单击确定按钮

DimxAsSingle

文本0.SetFocusx=文本0.TextIfx>0Then

文本0.Text=x^2+x+1Else

文本.Text=x^2+x–1EndifEndSub操作演示例:输入三个数,按由小到大顺序排序,输出排序后的数。测试编程:利用模块的过程,输入三个数,按由小到大顺序排序,输出显示排序后的数。事件驱动编程:将三个数分别输入到三个文本框中,单击“排序”按钮后,三个数按由大到小的顺序排序;单击“重新输入”按钮后,清空文本框,以便重新输入。完成步骤:创建界面设置控件属性编写代码操作演示利用模块的过程编程:SubSort()Dima,b,c,tAsSinglea=Val(InputBox("请输入数据a:"))b=Val(InputBox("请输入数据b:"))c=Val(InputBox("请输入数据c:"))Ifa>bThent=a:a=b:b=tEndIfIfa>cThent=a:a=c:c=tEndIfIfb>cThent=b:b=c:c=tEndIf

MsgBoxa&","&b&","&cEndSub利用事件驱动编程:第一步创建界面:利用事件驱动编程:第二步设置控件属性对象名主要属性设置功能说明Text1控件来源=“”接收一个数Text2控件来源=“”接收一个数Text3控件来源=“”接收一个数Command1标题=“排序”执行排序功能Command2标题=“重新输入”清空文本框利用事件驱动编程:第三步编写代码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)'比较数据并排序Ifa<bThent=a:a=b:b=tIfa<cThent=a:a=c:c=tIfb<cThent=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语句格式:

SelectCase<测试表达式>Case<表达式1><语句组1>Case<表达式2><语句组2>

…[CaseElse<语句组n>]EndSelect功能:当测试表达式等于表达式n时,程序就执行该表达式下的语句组;如果没有等于测试表达式的表达式,则执行CaseElse后的语句组。k语句组1语句组2语句组i语句组nk=k2k=k1k=knk=ki......Case项后面的值有三种形式:可以是单个值或几个值。如果是多个值,各值之间用逗号分隔。如:case1,3,5‘表示1,3,5三个数可以用关键字to来指定范围。如:case3to5‘表示3到5的数可以是连续的一段值。这时要在Case后面加Is。如:caseIs>3

‘表示大于3的所有数例:设y表示运费,x表示吨数问题描述:创建一个窗体,包括:两个标签、两个文本框、两个命令按钮。输入货物吨数时,单击“计算”按钮,显示出运费;单击“清除”按钮,清空两个文本框。操作演示5.循环结构for循环结构Do循环结构While循环Goto语句循环嵌套

(1)for循环结构格式:for<循环变量>=<初值>to<终值>[step步长]

循环体next[循环变量]功能:循环变量赋初值;循环变量与终值比较,即:循环变量是否超过终值?若超过,则终止循环;若没超过,则执行循环体,然后,循环变量增加一个步长。例:计算s=1+2+3+…+100使用For循环结构SubSum_For()DimnAsInteger,sAsIntegerDimtAsIntegers=0Forn=1To100Step1s=s+nNextnDebug.Print"1+2+3+…+100=",sEndSub(2)Do循环结构5种格式:格式1:Do<语句序列>Loop格式2:DoWhile<条件><语句序列>Loop格式3:DoUntil<条件><语句序列>Loop格式4:Do<语句序列>LoopWhile<条件>格式5:Do<语句序列>LoopUntil<条件>例:计算s=1+2+3+…+100使用Do循环结构SubSum_Do()DimnAsInteger,sAsIntegerDimtAsIntegers=0DoWhilen<=100s=s+nn=n+1LoopDebug.Print"1+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+1Wend

MsgBox"N的阶层为:"&totalEndSub(4)goto语句格式:GoTo

标号功能:程序执行过程中,遇到GoTo语句,会无条件地转到其后的“标号”位置,并从该位置继续执行程序。说明:标号需英文开头,并后加“:”一般与if语句配合使用【例8.28】求1~100之和。【例8.28】求1~100之和。程序代码如下:

PublicSubcc() Dimi,sum1AsInteger sum1=0 i=1 label: sum1=sum1+i i=i+1 Ifi<=100Then

GoTolabel EndIf

MsgBoxsum1 EndSub(5)循环嵌套

格式:For循环变量=初值To终值[step步长值]<

语句块>

For循环变量=初值To终值[step步长值] <

语句块>[ExitFor] <语句块>Next[循环变量]<

语句块>[ExitFor]<语句块>Next[循环变量]While条件<语句块>……Wend【例8.30】输出正三角形程序代码如下:PrivateSub三角形()Fori=1To8Forj=1To8-i

Debug.Print"";'在立即窗口输出NextjFork=1To2*i-1

Debug.Print"*";Nextk

Debug.PrintNextiEndSub小结本部分主要讲述了VBA的基本语句和基本的语句控制结构,主要包括顺序、选择、循环三种。其中,重点内容是选择和循环结构;难点内容是循环结构。课堂练习课堂作业1、AccessVBA有哪些程序控制语句?2、选择结构的几种形式?3、for循环的结构?4、do循环的5种格式?彼此之间的区别?四.VBA模块1、模块对象Access数据库7个对象之一,其实质就是没有界面的VBA程序。模块一般是由声明、语句和过程组成的集合,作为一个已命名的单元存储在一起,并对VBA代码进行组织。模块可分为两种基本类型:类模块标准模块建立一个标准模块示例2.过程过程由VBA语句组成,是一段相对独立的代码。过程将程序分割成较小的程序单元,这样就可以简化程序设计任务。创建过程过程可以分为:Sub过程(子过程)事件过程Function过程(函数)Sub过程定义Sub过程的格式:[Private|Public|Static]Sub<过程名>([参数表])语句块EndSubSub过程的调用,两种方式:Call过程名([实际参数表])直接使用过程名调用例如,Hello过程事件过程事件过程是与对象的事件相关联的程序。为窗体、报表或控件的事件来编写事件程序,这样当该事件被引发时便会执行其事件程序来完成所需的处理。例:在窗体上建立一个“获得当前时间”按钮,按下按钮便能执行VBA程序代码来显示当前时间。方法一:利用窗体的控件中的事件标签方法二:利用“视图”菜单中的“代码”命令操作演示Function过程定义Function过程的格式:[Private|Public|Static]Function<过程名>([参数表])[As类型]<语句块><过程名=返回值>EndFunction调用Function过程与使用VBA内部函数相同例如,GetCurDate过程模块与过程注意:过程不是Access的一个独立对象,不能单独保存,只能存在于模块中。subFunction3.参数传递在调用过程中,主调过程和被调过程之间的数据传递。即主调过程的实参传递给被调过程的形参,然后执行被调过程。实参向形参的数据传递有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值EndSub4.过程和变量的作用域过程或变量可被访问的范围称为过程或变量的作用域。过程的作用域:模块级(使用Private)全局级(使用Public)变量的作用域表8.2

局部变量【例8.35】模块变量【例8.36】全局变量【例8.37】五、面向对象程序设计

1、理解面向对象编程:面向对象是观察世界和编写计算机程序的自然方式。优点:结构清晰完整,数据独立、易于管理缺点:性能方面要做些牺牲2、理解类与对象:在面向对象的方法中,类是具有共同属性、共同行为方法的对象的抽象。一个对象代表应用程序中的一个元素窗体或是其上的按钮、标签和文本框等对象三要素一个对象通过属性、方法和事件来描述。属性是指一个对象所具备的特征比如:按钮控件的Caption属性方法是指对象可以执行的动作比如:文本框控件可以SetFocus方法事件是指对象所能检测的动作比如,按钮的Click事件3.对象声明和引用

(1)对象的声明声明对象变量的语法格式:Dim对象变量As[New]对象类说明:使用new,则不必使用Set引用特定对象Set对象变量=[New]对象表达式例如,【例8.38】DimmyFormAsNewFormDimmyTextAsTextBoxSetmyText=New

TextBox(2)对象的使用对象引用一般格式:[<集合名>]![<对象名>].<属性名>|<方法名>[<参数名表>]引用运算符:!和.例如:[Forms]![登陆窗体]![text0].text=“1”DoCmd.CloseSELECT学生表.姓名FROM学生表对象引用规则注意事项引用规则:引用窗体或报表必须从集合开始。例如:[Forms]![窗体1].Caption[Reports]![学生成绩]![学分]+10[Reports]![学生成绩]![学分].Visible[Forms]![窗体1]![Label1].FontName[Label1].FontName(当前窗体)改变对象的属性设置例如:Forms![窗体1].Caption=Date&Space(2)Label1.FontName=“隶书”

Label1.FontBold=TrueLabel1.FontSize=18Label1.FontItalic=TrueText0.FontColor=255Text0.Height=Text0.Width*0.54.Application的对象模型

VBA使用Application对象操作当前活动的窗体、报表、数据访问页及它们所包含的控件。Application对象层次关系如图Application对象Form对象、Forms集合和Control对象、Controls集合DoCmd对象ApplicationFormsForm多个对象(1)Application对象Application对象引用活动的Access应用程序创建Application类的新实例:DimappAccessAsObjectSetappAccess=CreateObject("Access.Application")例如,【例8.40】SubGetAccessData()DimstrDBAsStringDimappAccessAsAccess.Application

StrDB=”C:\ProgramFiles\MicrosoftOffice\Office11\Samples\Norwind.mdb”

AppAccess.OpenCurrentDatabase

strDB

aapAccess.DoCmd.OpenReport"图书编目表"EndSub(2)Form对象、Forms集合和Control对象、Controls集合Forms是一个集合对象,Form是Forms集合中的一个成员。Forms集合包含Access数据库中当前打开的所有窗体。每个窗体对象都有一个Controls集合,该集合包含了窗体上的所有控件。例如,【例8.41】SubGetControlsData()

Forms!OrderForm!NewData'隐式引用

Forms!OrderForm.Controls!NewData'显示引用EndSub(3)DoCmd对象DoCmd对象可以调用Access内置的方法DoCmd又可以看作AccessVBA中提供的一个命令【例8.42】DoCmd对象应用举例DoCmd.OpenForm"图书编目表“说明:DoCmd对象的大多数方法都有参数,某些参数是必需的,其他一些是可选的。5.事件驱动工作方式事件包括事件的触发和执行程序两方面。一个事件可对应一个程序-事件过程或宏。在Access中事件一旦被触发,系统马上就去执行与该事件相关的程序(事件过程或宏)。执行完毕后,系统又处于等待某事件发生的状态,这种程序执行方式应用程序的事件驱动工作方式。事件触发方式可细分为3种:由用户触发、由系统触发、由代码引发例:改变文本框中日期的颜色若单击主体,窗体文本框中的日期即以红色显示;若双击主体,该日期则以蓝色显示。理解事件驱动:主体节中,单击右键,在菜单中选择事件生成器。在代码窗口中观察:PrivateSub主体_Cilck()Text0.ForeColor=vbRed‘文本框前景色设为红色EndSub“双击”事件代码类似:Text0.ForeColor=vbBlue思考:使用Text0.Move方法和MouseDown事件使文字跟随鼠标移动。操作演示小结本章主要讲解了面向对象编程(OOP)基础、VBA概述、VBA编程基础、VBA基本控制结构等方面的知识。教学重点:VBA语法规则,选择结构及循环结构教学难点:选择结构,循环结构课堂练习课堂作业1、模块在结构上由哪几部分组成?2、过程有几类?有何区别?3、什么是对象和类?举例说明。

4、对象的使用方法?附录:VBE窗口的组成代码编辑器【例8.1~8.5】标识符的命名规则使用数值型函数,字符串函数使用日期/时间函数,类型转换函数计算费用窗体与主要代码新建模块对象示例表8.2变量使用规则和作用范围【例8.35~37】常用属性常用方法常用事件1-2VBE窗口的组成标准工具栏工程窗口属性窗口代码窗口视图切换插入模块运行、中断、停止设计模式工程资源浏览器属性窗口对象浏览器查看代码查看对象切换文件夹对象框属性列表代码编辑器系统自动生成事件过程框架在此处填写事件响应代码选择对象框选择对应的事件过程【例8.1】程序的调试过程问题描述:建立两个标准过程,功能为:求1~100之和和由键盘输入学生考试分数判定学生的成绩等级,并运行调试这两个标准模块。操作步骤:打开VBE窗口,录入代码设置断点运行时,可以查看程序运行状态(F9)运行程序,调试程序利用立即窗口、本地窗口、监视窗口协助调试操作演示【例8.2】变体类型定义应用举例

问题描述:变体类型定义应用示例代码:DimMyVarAsVariant'变体类型也可用Dim定义MyVar=98052a=20a="1234"a=Null'变量a没有显式声明,a的类型发生三次变化MyVar=a【例8.3】对象类型定义应用举例问题描述:对象类型定义应用示例代码:DimobjDbAsObjectSetobjDb=OpenDatabase_("c:\高校图书馆管理系统\高校图书馆管理系统.mdb")【例8.4】自定义类型定义举例问题描述:自定义类型定义举例示例代码:TypeBook

BookNameAsString*20'定义定常字符串变量存储书名

BookDateAsDate'定义日期变量存储出版日期

BookNumberAsInteger'定义整型变量存储书的数量EndType用户自定义类型的语法格式如下:[private|public]Type数据类型名 变量名1As数据类型 变量名2As数据类型

…EndType【例8.5】符号常量定义应用举例问题描述:对象类型定义应用示例代码:ConstPI=3.1415926PublicSubarea()DimrAsIntegerDiml,areaAsSingler=InputBox("请输入圆的半径")l=2*PI*r:area=PI*r*rh=MsgBox("周长:"&l&"面积:"&area,1+_

vbQuestion+vbDefaultButton1+0,"计算圆的周长和面积")EndSub标识符的命名规则当在VBA的模块中为常数、变量等标识符命名时,必须遵循下列规则:只能由字母、数字、汉字和下划线组成,不能含有空格和除了下划线字符“_”以外的其他任何标点符号,长度不能超过255。例如,dimsys_ACasstring必须以字母开头,不区分大小写。例如,Bxy、BXY、BxY、bxy系统都认为是相同的。不能和VBA保留字重名。例如:不能以IF命名一个变量。使用数值型函数问题描述:计算数学表达式的值。SubExpression()DimsS=y*y+abs(x)+exp(3)+sin(30*3.14/180)-sqr(x*y)+log(3)

Msgbox"s="&sendsub使用字符串函数例:利用字符串函数将数值321分解成3、2、1并输出3*100+2*10+1。SubConvert()DimNumAsIntegerDimstrNumAsStringDimNum1AsString,Num2AsString,Num3AsStringNum=123:strNum=Trim(Str(Num))Num1=Left(strNum,1):Num2=Right(strNum,1)Num3=Mid(strNum,2,1)

MsgBoxNum1&"*100+"&Num3&"*10+"&Num2EndSub使用日期/时间函数例:计算一下你还有多少天毕业。SubGetDays()DimGraduateDateAsDateDimDaysAsLong

GraduateDate=CDate(InputBox("请输入你的毕业时间:"))Days=DateDiff("d",Now,GraduateDate)

MsgBox"你还有"&Days&"毕业!"EndSub使用类型转换函数例:计算一下你还有多少天毕业。SubGetDays()DimGraduateDateAsDateDimDaysAsLong

GraduateDate=CDate(InputBox("请输入你的毕业时间:"))Days=DateDiff("d",Now,GraduateDate)

MsgBox"你还有"&Days&"毕业!"EndSub计算费用窗体与主要代码Dimt,yAsDoubleTxttone.SetFocust=Val(Txttone.Text)SelectCasetCaseIs<10y=100*tCaseIs<50y=70*tCaseIs>=50y=50*tEndSelectTxtCost.SetFocusTxtCost.Text=y思考:此段代码的位置新建模块对象示例例:建立一个标准模块并保存。操作步骤:选择“模块”对象单击“新建”按钮,建立一个标准模块系统会出现VBA集成开发环境在模块属性窗口中修改模块名或在右面的代码编辑器建立过程和相关代码单击工具栏中的“保存”按钮,输入模块名后,保存此模块。表8.2变量使用规则和作用范围局部变量模块变量全局变量声明方式Dim、StaticDim、PrivatePublic声明位置在子过程中在窗体/模块的声明区域在标准模块声明区域能否被本模块的其它过程存取不能能能能否被其它模块的过程存取不能不能能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论