ACCESS_VBA_模块与VBA编程.doc_第1页
ACCESS_VBA_模块与VBA编程.doc_第2页
ACCESS_VBA_模块与VBA编程.doc_第3页
ACCESS_VBA_模块与VBA编程.doc_第4页
ACCESS_VBA_模块与VBA编程.doc_第5页
免费预览已结束,剩余41页可下载查看

下载本文档

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

文档简介

全国计算机等级考试培训二级ACCESS教案内部资料章节名称:第09章章节内容:模块与VBA编程作 者:阙清贤完成日期:2011-7-20湖南人文科技学院公共计算机教研室末经允许,严禁打印与传播 第10章 VBA数据库编程本章考试大纲(1)模块的基本概念(2)VBA程序设计基础(3)VBA流程控制语句(4)过程调用与参数传递教学内容一、基本概念1、类模块 类模块是包含类的定义的模块,具有属性与方法。三种基本形式:窗体类模块、报表类模块、自定义类模块。窗体与报表模块的作用范围:窗体与报表内部窗体与报表模块的生命周期:窗体打开窗体关闭2、标准模块用于存放公共过程(子程序或函数)的模块。考点:模块的作用,二类模块的区别3、源程序用VB代码编写的程序,程序员编写,易读。计算机不能直接执行4、目标程序将VB源程序经过编译后生成的二进制代码,计算机易识别5、编译程序、解释程序、汇编程序编译程序:将高级语言源程序翻译成机器语言,全部翻译,再执行解释程序:将高级语言逐条解释成机器语言,逐条执行汇编程序:将汇编语言编写的源程序翻译成机器语言考点:三类程序的区别,均是系统软件 6、Sub过程定义:sub 过程名( ) 代码段 End sub调用:1) 过程名 2) Call 过程名( )说明:过程无返回值考点:sub与function的区别,sub的二种调用方式7、Function函数定义:Function 函数名(参数 as 类型) as 返回值类型 代码段 函数名=表达式 将表达式的结果通过函数名返回 End Function调用:1) x=add(3,5)说明:不能用Call调用函数考点:值的返回方式,静态局部变量与全局变量的特点8、模块中运行宏Docmd.RunMacro 宏名,重复次数,结束条件说明:结束条件为False时,停止宏运行二、VBA程序设计基础1、基本概念属性:对象的特征,text1.left,text1.backcolor方法:对象的行为,也是一段代码,text1.setfocus,text1.move事件过程:对象所能识别的动作,text1.onclick,text1_onKeyDown2、VBA中的数据类型数据类型类型标识符字节字符串型String$字符长度(0-65400)字节型Byte无1布尔型Boolean无2 False True整数型Integer%2长整数型Long&4单精度型Single!4双精度型Double#8日期型Date无8 货币型Currency8小数点型Decimal无14变体型Variant无以上任意类型,可变对象型Object无4说明:1、Boolean-数值型 false-0 True-1 2、数值型-Boolean 非0True 0-False 3、没声明类型的均为:Variant类型(变体类型) 4、用户自定义类型: Type stu 学号 as string 姓名 as string 年龄 as integer End Type Dim zhang as stu Zhang.学号=”0900010”考点:数据类型的类型标识符,布尔型与数据值的转换,变体类型的特点,日期型的定界符3、变量1)变量变量:随着程序的执行,不断发生变化的量变量三要素:变量名,变量值,变量类型变量命名要求:1) 不能使用VBA关键字,如: for,dim,if,end 2) 无大小写之别 3) 长度最大255 4) 字母或数字开头,中间不能空格。3ab,ab3 c,mmn考点:合法的变量名2)变量声明( 显示与隐式声明)显示声明:Dim s as string Dim a as integerDim s$ Dim a% Dim k 未进行类型定义,则K为变体类型隐式声明:s=”this is a test” a=3.14强制声明:Option Explicit 要求下面所有变量先定义类型,后使用3)变量的作用域局部变量:定义在模块的方法或函数内部,Dim,Private,Static全局变量:定义在所有模块与方法之外,一般用Public声明模块变量:定义在模块中所有函数与方法之外,Dim,Private,Static考点:static变量与全局变量的特点,定义变量的关键词。4、常量在程序的执行过程中,一直不发生变化的量1)直接常量:123,“123”,“china”2)符号常量:Const pi=3.143)系统常量:True,False,Yes,No,Null5、数组数组:一组相同数据类型的变量组成的集合,同名,不同下标格式:Dim a(最大下标,最大下标) as 数据类型声明:Option Base 1 下标起点为1,默认为0例如:Dim a(10)% 定义11个整型变量,a(0)-a(10) Dim a(3 to 5) 定义了a(3),a(4),a(5) Dim a(2,3) 定义了3行,4列,共12个数组元素 Dim a(-2 to 2,3 to 5) 定义了15个数组元素Eg: Dim a() A=array(1,3,5,7,9) S=0 For i=1 to 4 S=s*10+a(i) Next Msgbox s考点:数组的下标0或1,数组元素的个数计算,数组元素的赋值,数组的应用6、数据库对象变量分类:ACCESS提供7大对象,另加:Docmd对象格式:Forms!窗体名!控件名!属性名 Reports!报表名!报表控件名!属性名注意:对象或控件名间有空格,注意加 将名称括起来简化:set aa=Forms!text1!BackColor考点:对象的包含关系及引用方法8、运算符与表达式算术运算符、字符运算符、关系运算符、逻辑运算符1) 算术运算符:乘方,乘*,除/,整除,求余Mod,加+,减-共7个。对除运算而言,符号与被除数相同。求余运算是小数,四舍五入变整再求余。2) 字符运算:“&”的二端可以字符串与数值型,“+”的二端必须是字符串3) 关系运算符:,=,=,=共6个,结果为逻辑型值4) 逻辑运算符:AND NOT OR,结果为逻辑值5) 运算符优先级:算术连接关系逻辑赋值,括号优先级最高表达式:将常量、变量、函数等通过运算符连接起来的式子称为表达式分类:算术表达式,逻辑表达式,字符表达式,关系表达式考点:重点注意字符串运算符:&和+,各运算符的特点,各种表达式的计算。9、函数1)测试函数IsNumeric(x) 是否为数字, 返回Boolean结果,True or FalseIsDate(x) 是否是日期, 返回Boolean结果,True or FalseIsEmpty(x) 是否为Empty,返回Boolean结果,True or FalseIsArray(x) 指出变量是否为一个数组。IsError(expression)指出表达式是否为一个错误值IsNull(expression) 指出表达式是否不包含任何有效数据(Null)。IsObject(identifier)指出标识符是否表示对象变量考点:IsNull,IsNumeric,IsEmpty2)数学函数Sin(X)、Cos(X)、Tan(X)、Atan(x) 三角函数,单位为弧度Log(x)返回x的自然对数Exp(x)返回e的x次方Abs(x)返回绝对值Int(number)、Fix(number)都返回参数的整数部分,注意区别:Int将-8.4转换成-9,而Fix将-8.4转换成-8。Int下取整,Fix只取整数部分Sgn(number)返回一个Variant (Integer),指出参数的正负号Sqr(number)返回一个Double,number的平方根Rnd(x)返回0-1之间的单精度数据,x为随机种子考点:Int、Fix函数的区别,rnd函数的特点3)字符串函数Trim(string) 去掉string左右两端空白Ltrim(string) 去掉string左端空白Rtrim(string) 去掉string右端空白Len(string) 计算string长度Left(string, x) 取string左段x个字符组成的字符串Right(string, x) 取string右段x个字符组成的字符串Mid(string, start,x) 取string从start位开始的长度为x的字符串Ucase(string) 转换为大写Lcase(string) 转换为小写Space(x) 返回x个空白的字符串Asc(string) 返回一个integer,代表字符串中首字母的字符代码Chr(charcode) 返回指定的字符代码对应的字符考点:所有字符串函数4)转换函数CBool(expression) 转换为Boolean型CByte(expression) 转换为Byte型CCur(expression) 转换为Currency型CDate(expression) 转换为Date型CDbl(expression) 转换为Double型CDec(expression) 转换为Decemal型CInt(expression) 转换为Integer型CLng(expression) 转换为Long型CSng(expression) 转换为Single型CStr(expression) 转换为String型CVar(expression) 转换为Variant型Val(string) 转换为数据型Str(number) 转换为String考点:重点是VAL和STR函数5)时间函数Now() 返回计算机系统设置的日期和时间Date() 返回系统日期Time() 返回当前系统时间Timer() 返回一个Single,代表从午夜开始到现在经过的秒数。TimeSerial(hour, minute, second) 将三个参数合并转换为时间格式DateDiff(interval, date1, date2, firstdayofweek, firstweekofyear) 返回两个指定日期间的时间间隔数目Second(time) 返回0到59之间的整数,表示一分钟之中的某个秒Minute(time) 返回0到59之间的整数,表示一小时中的某分钟Hour(time) 返回0到23之间的整数,表示一天之中的某一钟点Day(date) 返回1到31之间的整数,表示一个月中的某一日Month(date) 返回1到12之间的整数,表示一年中的某月Year(date) 返回年份。Weekday(date, firstdayofweek) 返回某个日期是星期几考点:注意now与date的区别,上述函数考的频率一般,但需记住函数名与功能三、VBA流程控制1、程序三种基本结构:顺序,选择/分支,循环2、程序书写规则:1)一行分多行写:每行后面加“_”2)多行写在一行内:二条语句间用冒号“ : ”分开3)注释有二种方法:单引号” ”或Rem 3、赋值语句1)普通变量用:let 变量=值 或省略let2)对象变量用:set 对象变量=XXX4、条件语句 1) if then 语句块 End ifEg: a=75 If a60 then x=1 If a70 then x=2 If a80 then x=3 If a90 then x=4 Msgbox x2) if then 语句块 Else 语句块 End if考点:特别注意if的嵌套使用,必考3) select Case 变量或表达式 Case 表达式 语句块 Case 表达式1,表达式2 语句块 Case 表达式1 to 表达式2 语句块 Case Else 语句块 End select 考点:注意多条件表达式的运用4) 条件函数IIf(表达式, 真返回值,假返回值)Switch(表达式1, 真返回值, 表达式2, 真返回值)Choose(索引表达式, 为1的返回值,为2的返回值)考点:三类函数的名称,及运算规则5、循环语句 1) For-next循环 For 循环变量=初值 to 终值 step 步长值 循环体 / Exit For Next 循环变量 说明:1.初值大于终值,步长值为负;初值小于终值,步长值为正 2.步长值为1,可省略 3.Exit For 为强制退出循环 Eg1: for i=1 to 100 S=s+i Next Eg2: for i=100 to 1 step -1 S=s+i Next Eg3: for i=1 to 100 step 2 S=s+i Next Eg4: for i=1 to 100 S=s+i If s1000 then Exit for End if Next Eg5: For i=1 to 3 X=4For j=1 to 4X=3 For k=1 to 2X=x+5 Next kNext jNext i MsgBox x 2) Do-Loop循环 格式1: Do while 条件表达式为真 循环体 / Exit Do Loop Eg1: do while i=100 S=s+i i=i+1 / i=i+2 Next 格式2:Do Until 条件表达式为假 循环体 / Exit Do Loop 格式3:Do 循环体 / Exit Do Loop Until 条件表达式为假 2) While-Wend循环 格式: while 条件表达式为真 循环体 / Exit Do Wend6、Goto语句无条件转换语句,格式: goto 标号考点:各类循环的运行次数,四、过程调用与参数传递1、子过程的定义Public | Private | Static sub 子过程名( 形参 as 类型 ) 过程语句组 / Exit SubEnd Sub2、子过程的调用Call 子过程名( 实参 ) 或 子过程名 实参Eg: Public x as integer Private sub command1_click() X=10 Call s1 / s1( ) Call s2 / s2( )Msgbox x End sub Private sub s1() X=x+20 End sub Private sub s2() Dim x as ineger X=x+20 End sub3、函数过程的定义修饰符 Function 函数名( 形参 as 类型 ) as 返回值类型 函数语句组 / Exit Function 函数名=表达式 将函数的处理结果赋给函数名End Function4、函数过程的调用变量=函数名( 实参 )5、参数传递ByVal:值传递Eg: a值传递给x,x的变化不影响aByRef:地址传递,形参前未加任何修饰,默认为地址传递。 Eg: a地址传递给x,则a与x共地址单元,x的变化影响a,即a与x值相同考点:过程与函数的定义、调用方法,参数传递Eg: 运行下列程序,窗体中的显示结果是:x= 【11】 。 Option Compare Database Dim x As Integer Private Sub Form_Load() x=3 End Sub Private Sub Command11_Click() Static a As Integer Dim b As Integer b=x2 fun1 x,b fun1 x,b MsgBox x=&x End Sub Sub fun1(ByRef y As Integer,ByVal z As Integer) y=y+z z=y-z End Sub五、VBA程序错误1)三种类型的错误语法错误:编写的程序指令有错误运行错误:参数传递类型或数据异常错误逻辑错误:程序算法思想错误,导致结果与希望值不同2)错误的处理方法On Error Goto 标号 :跳转至标号处执行On Error Resume Next :执行下一条语句On Error Goto 0 :关闭错误处理3)断点及各种调试窗口断点:程序中的一个位置,运行到该位置后,程序暂停本地窗口:可以观察变量的声明及变量的值立即窗口:可以给某一变量指定一个新值,或输出显示某些变量的值代码窗口:通过代码窗口来观察宏的执行过程,也可以通过将鼠标指针指向某变量来检测变量的值。本地窗口:可以通过本地窗口观察宏程序所使用的变量、表达式、对象的变化来寻找程序错误;也可在“本地”窗口直接改变属性值,还可以通过“本地”窗口快速浏览某个对象的所有属性。监视窗口:可以添加监视表达式以便观察关键的测试变量或表达式随宏执行的变化情况。考点:错误的类型,错误的处理方法,各类窗口的作用历年考题【11.3】定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A)-369B)369C)0.369 D)整数集合1,2,3,4,5【11.3】下列表达式中,能正确表示条件“x和y都是奇数”的是A)x Mod 2=0 And y Mod 2=0B)x Mod 2=0 Or y Mod 2=0C)x Mod 2=1 And y Mod 2=1D)x Mod 2=1 Or y Mod 2=1【11.3】在VBA中,能自动检查出来的错误是A)语法错误 B)逻辑错误C)运行错误D)注释错误【11.3】下列给出的选项中,非法的变量名是A)Sum B)Integer_2 C)RemD)Form1【11.3】如果在被调用的过程中改变了形参变量的值;但又不影响实参变量本身,这种参数传递方式称为A)按值传递 B)按地址传递C)ByRef传递D)按形参传递【11.3】表达式“B=INT(A+0.5)”的功能是A)将变量A保留小数点后1位 B)将变量A四舍五入取整C)将变量A保留小数点后5位 D)舍去变量A的小数部分【11.3】VBA语句“Dim NewArray(10) as Integer”的含义是A)定义10个整型数构成的数组NewArrayB)定义11个整型数构成的数组NewArrayC)定义1个值为整型数的变量NewArray(10)D)定义1个值为10的变量NewArray【11.3】运行下列程序段,结果是For m=10 to 1 step 0k=k+3Next mA)形成死循环 B)循环体不执行即结束循环C)出现语法错误 D)循环体执行一次后结束循环【11.3】运行下列程序,结果是Private Sub Command32_Click()f0=1:f1=1:k=1Do While k=5 f=f0+f1 : f0=f1 :f1=f k=k+1LoopMsgBox f=&fEnd SubA)f=5B)f=7C)f=8D)f=13【11.3】有如下事件程序,运行该程序后输出结果是Private Sub Command33_Click()Dim x As Integer,y As Integerx=1:y=0Do Until y=25 y=y+x*x : x=x+1LoopMsgBox x=&x&,y=&yEnd SubA)x=1,y=0B) x=4,y=25C)x=5,y=30D)输出其他结果【11.3】下列程序的功能是计算sum=1+(1+3)+(1+3+5)+(1+3+5+39)Private Sub Command34_Click()t=0 : m=1 :sum=0Do t=t+m : sum=sum+t m=_Loop While m=85 Then qmzp=优 ElseIf pscj+kscj“11”C)102=98+4 D)#5/1/2010#+5【10.9】要将一个数字字符串转换成对应的数值,应使用的函数是A)ValB)SingleC)AscD)Space【10.9】下列变量名中,合法的是A)4AB)A-1C)ABC_1D)private【10.9】若变量i的初值为8,则下列循环语句中循环体的执行次数为Do While i=17 i=i+2LoopA)3次B)4次C)5次D)6次【10.9】InputBox函数的返回值类型是A)数值B)字符串C)变体D)视输入的数据而定【10.9】下列能够交换变量X和Y值的程序段是A)Y=X:X=Y B)Z=X:Y=Z:X=YC)Z=X:X=Y:Y=ZD)Z=X:W=Y:Y=Z:X=Y【10.9】窗体中有命令按钮Commandl,事件过程如下:Public Function f(x As Integer) As Integer Dim y As Integer x=20 :y=2 :f=x*yEnd FunctionPrivate Sub Commandl_Click() Dim y As Integer Static x As Integer x=10 : y=5 : y=f(x) Debug .Print x;yEnd Sub运行程序,单击命令按钮,则立即窗口中显示的内容是A)10 5B)10 40C)20 5D)20 40【10.9】窗体中有命令按钮Commandl和文本框Text1,事件过程如下:Function result(ByVal x As Integer)As Boolean If Mod 2=0 Then result=True Else result=False End IfEnd FunctionPrivate Sub Commandl_Click() x=Val(InputBox(“请输入一个整数”) If_ Then Text1=Str(x)&“是偶数.” Else Text1=Str(x)&“是奇数.” End IfEnd Sub运行程序,单击命令按钮,输入19,在Text1中会显示“19是奇数”.那么在程序的空白处应填写A)result(x)=“偶数”B)result(x)C)resuIt(x)=“奇数”D)NOT result(x)【10.9】窗体有命令按钮Commandl和文本框Textl,对应的事件代码如下:Private Sub Commandl_Click( )For i=1 To 4 x=3 For j=1 To 3 For k=1 To 2 x=x+3 Next k Next jNext iText1 .Value=Str(x)End Sub运行以上事件过程,文本框中的输出是A)6B)12C)18D)21【10.9】窗体中有命令按钮run34,对应的事件代码如下:Private Sub run34_Enter()Dim num As Integer,a As Integer,b As Integer,i As Integer For i=1 To 10 num=InputBox(“请输入数据:”,“输入”) If Int(num/2)=num/2 Then a=a+1 Else b=b+1 End If Next iMsgBox(“运行结果:a=”&Str(a)&“,b=”&Str(b)End Sub运行以上事件过程,所完成的功能是A)对输入的10个数据求累加和B)对输入的10个数据求各自的余数,然后再进行累加C)对输入的10个数据分别统计奇数和偶数的个数D)对输入的10个数据分别统计整数和非整数的个数【10.9】运行下列程序,输入数据8, 9, 3, 0后,窗体中显示结果是Private Sub Form _click()Dim sum AsInteger,m As Integersum=0Do m=InputBox(“输入m”) sum=sum+mLoop Until m=0MsgBox sumEnd SubA)0B)17C)20D)21【10.9】一下列程序的功能是求方程:x2十y2=1000的所有整数解。请在空白处填入适当的语句,使程序完成指定的功能。Private Sub Commandl_Click()Dim as integer,y as integerFor x= -34 To 34 For y= -34 To 34 If【10】Then Debug .Print x,y End If Next yNext xEnd Sub【10.9】下列程序的功能是求算式:1+1/2 ! +1/3!+1/4!+前10项的和(其中n!的含义是n的阶乘)。请在空白处填入适当的语句,使程序完成指定的功能。Private Sub Commandl_Click() Dim i as integer,s as single,a as single a=1:s=0 For i=1 To 10 a=【11】 s=s+a Next i Debug .Print “1+1/2!十1/3!+. =”;sEnd Sub【10.9】在窗体中有一个名为Command12的命令按钮,Click事件功能是:接收从键盘输入的10个大于0的不同整数,找出其中的最大值和对应的输入位置。请在空白处填入适当语句,使程序可以完成指定的功能。Private Sub Command12_Click() max=0 maxn=0 for i=1 To 10 num=Val(InputBox(,请输入第“&i&”个大于0的整数:“) If【12】Then max=num maxn=【13】 End If Next iMsgBox(”最大值为第“&maxn&”个输入的“&max)End Sub【10.9】数据库的”职I基本情况表“有”姓名“和”职称“等字段,要分别统计教授、副教授和其他人员的数量。请在空白处填入适当语句,使程序可以完成指定的功能。Private Sub Commands_Click() Dim db As DAO .Database Dim rs As DAO .Recordset Dim zc As DAO .Field Dim Countl As Integer,Count2 As Integer,Count3 As Integer Set db=CurrentDb() Set rs=db .OpenRecordset(”职工基本情况表“) Set zc=rs .Fields(”职称“) Countl=0 : Count2=0 : Count3=0 Do While Not【14】 Select Case zc Case Is=”教授“ Countl=Countl+1 CaseIs=”副教授“ Count2=Count2+1 Case Else Courit3=Count3+1 End Select 【15】 Loop rs .Close Set rs=Nothing Set db=Nothing MsgBox”教授:“&Count1&”,副教授:“&Count2 &”,其他:“&count3End Sub【10.3】下列属于通知或警告用户的命令是A)PrintOutB)OutputToC)MsgBoxD)RunWarnings【10.3】能够实现从指定记录集里检索特定字段值的函数是A)NzB)FindC)LookupD)DLookup【10.3】如果X是一个正的实数,保留两位小数、将千分位四舍五入的表达式是A)0.01*Int(x+0.05) B)0.01*Int(100*(X+0.005)C)0.01*Int(x+0.005)D)0.01*Int(100*(X+0.05)【10.3】在模块的声明部分使用“Option Base 1”语句,然后定义二维数组A(2 to 5,5),则该数组的元素个数为A)20B)24C)25D)36【10.3】由“For i=1 To 9 Step -3”决定的循环结构,其循环体将被执行A)0次B)1次C)4次D)5次【10.3】在窗体上有一个命令按钮Commandl和一个文本框Textl,编写事件代码如下:Private Sub Command1_Click()Dim i,j,xFor i = 1 To 20 step 2 x = 0 For j = To 20 step 3 x = x + 1 Next jNext iTextl.Value=Str(x)End Sub打开窗体运行后,单击命令按钮,文本框中显示的结果是A)1B)7C)17D)400【10.3】在窗体上有一个命令按钮Commandl,编写事件代码如下:Private Sub Commandl_Click()Dim y As Integery = 0Do y = InputBox(y=) If (y Mod 10) + Int(y / 10) = 10 Then Debug.Print y; Loop Until y = 0End Sub打开窗体运行后,单击命令按钮,依次输入10、37、50、55、64、20、28、19、-19、0,立即窗口上输出的结果是A)37 55 64 28 19 19B)10 50 20C)10 50 20 0 D)37 55 64 28 19【10.3】在窗体上有一个命令按钮Commandl,编写事件代码如下:Private Sub Command1_Click()

温馨提示

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

评论

0/150

提交评论