您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 第8章 模块与VBA程序设计
第8章模块与VBA程序设计本章重点讲解窗体模块与标准模块,以及面向过程的程序设计与面向对象的程序设计的思想、技术和方法。Access数据库技术及应用8.1模块的基本概念8.1.1窗体模块顾名思义,窗体模块是与窗体和控件相联系的。回顾一下例4.11的主要步骤:1)建立一个可视化的用户界面,即由窗体与控件组成。2)编写窗体与控件的事件过程。代码区的事件过程:每一行是有特定含义的符号序列,称为一个语句。一般是一行一条语句,也可以是用英文冒号间隔的几条语句。解决一个问题的语句集合,即“符号化语句序列”就叫做程序,而编制程序的过程就称为程序设计。由此例可知,窗体模块的主体是为响应事件而编写的程序。8.1.2标准模块创建标准模块的方法很简单:在数据库窗口,选择“模块”对象,单击“新建”按钮;或者选择“插入”菜单的“模块”命令,则进入VBA编辑窗口。向标准模块添加过程的步骤也很简单:选择“插入”菜单的“过程”命令,打开“添加过程”对话框。在“名称”文本框输入过程名(如Sum0),单击“确定”按钮,则在代码区自动生成命名的过程头行与尾行,然后在两行之间书写程序语句。可见,模块是将VBA的声明和过程作为一个单元进行存储的集合体。8.2VBA编程基础8.2.1常量与变量常量和变量是数据的两种基本表现形式,它们是程序处理的对象。在程序执行过程中,其值不允许改变的数据叫做常量,而其值可以改变的数据叫做变量。1.常量VBA程序中允许使用5种类型的常量:1)数值常量分为整型常量和实型常量(包括小数形式与指数形式)。2)字符串常量3)日期常量4)符号常量,指用户自己定义的常量,其格式为:Const符号常量名=常量值5)系统常量,指由Access系统定义的符号常量。在程序中,常量可以直接使用。2.变量1)变量的本质含义变量表示内存的存储单元,即由一个或几个连续字节组成的区域。在程序中,使用变量名对其值进行操作──向存储单元中存入数据,或从存储单元中取出数据。2)变量名由字母、汉字、数字和下划线组成的字符序列,但不能以数字和下划线开头。变量名长度不能超过255个字符,其内不允许嵌入空格和标点符号;不能使用系统定义的保留字(即有特殊含义的单词)作变量名;变量名中的字母大小写不加区分。3)定义变量的方法•使用Dim定义变量,一般格式是:Dim变量名表列[As类型名]•使用类型符定义变量,一般格式是:变量名类型符=值•定义变体类型变量使用类型名Variant定义变量,或者定义时缺少“As类型名”或“类型符”,则为变体类型变量。3.数组所谓数组,是指多个同类型变量的集合,其中的每个变量叫做数组元素。1)一维数组一维数组用来描述一行数据或一列数据,如一个学生的20科成绩,50个学生的单科成绩。一维数组的定义格式为:Dim数组名([下界to]上界)As类型名其中,下界与上界必须是整数,且下界必须小于上界。省略方括号时,表示下界为0。如何区分数组元素呢?使用带下标(即序号)的数组名。2)二维数组二维数组用来描述由多行多列组成的二维表上的数据,如一个班级的学生成绩表、课程表、一个单位的工资表、数学上的行列式与矩阵等。二维数组的定义格式为:Dim数组名([下界to]上界,[下界to]上界)As类型名其中,圆括号的逗号前部分表示二维数组的行范围,逗号后部分表示二维数组的列范围。引用二维数组元素,要使用带行下标与列下标的数组名。强调指出,数组在内存占有连续的存储空间。8.2.2运算符与表达式1.运算符在VBA中,对数据进行操作是通过运算符来实现的。共有5类运算符,按优先级由高到低依次是:1)算术运算符,8个。2)连接运算符,2个。3)关系运算符,6个。4)逻辑运算符,常用的3个。5)赋值运算符,同等号,但意义不同。2.表达式用运算符将常量、变量、函数等连接起来的,符合VBA语法规则的式子称为表达式。求表达式值的关键是掌握运算符的运算级别(叫做优先级),如教材P202的表8.2所示。求值规则是:•圆括号是级别最高的运算符;•不同类的运算符之间,按表8.2指出的横向顺序由高到低进行计算;•同类运算符之间,要严格按表8.2指出的纵向顺序由高到低进行计算;•级别相同的运算符之间,则从左至右依次进行计算;•惟一例外的是,指数运算符和负号运算符相邻时,负号优先。8.2.3常用函数函数是一种对应关系:对于自变量的一个值或一组值有唯一确定的函数值(常叫返回值)与它对应。函数能实现运算符难以完成的操作。1.数学函数1)Abs(x),求x的绝对值。2)Int(x),求不大于x的最大整数。3)Sqr(x),求x的平方根。4)Round(x[,n]),按指定的小数位数n(省略为0)对x进行四舍五入。5)Rnd()或Rnd,它产生大于等于0,但小于1的随机数。2.字符串函数1)Space(n),此函数产生n个空格,它与其后的数据用分号间隔。2)Tab(n),从第n列开始输出数据,它与其后的数据用分号间隔。3)InStr(s,t),从主串s的第一个字符开始,查找子串t在s中首次出现的位置。3.转换函数1)Val(s),将数值字符串s转换成能计算的数值。2)Str(x),将数值x转换成字符串,正数前保留一个空格,负数前保留负号。3)Asc(s),将字符串s的首字符转换成对应的ASCII码值。4)Chr(n),将ASCII码值n转换成对应的字符。5)CDate(s),将日期字符串s转换成日期。6)Nz(x),当x是数字型且值为Null时,函数值为0;当x是字符串型且值为Null时,函数值为空串(即“”)。4.输入/输出函数1)InputBox(提示串[,标题串]),等待用户输入文本数据。2)MsgBox(输出项[,按钮值][,标题串]),用来显示输出项的内容。5.条件函数Iif(条件,表达式1,表达式2)若条件成立,则取表达式1的值;否则,取表达式2的值。6.验证函数1)IsNull(x),检查表达式x的值是否为无效数据(Null)。2)IsNumeric(x),检查表达式x的值是否为数值。使用函数的常用格式是:变量=函数名(值表列)。此外,函数可以做表达式的一部分,或做另一个函数的自变量。8.2.4基本语句VBA程序是由一个个语句组成的,每个语句是完成某项功能或操作的一条命令。1.注释语句一种是以单撇号开头的文字串,一种是以Rem开头的文字串。2.赋值语句,使用格式为:变量名=操作数或表达式语句的含义是,将赋值运算符(=)右侧的操作数或表达式的值存入到左侧变量所代表的存储单元中。3.输出语句指在立即窗口中使用的Print(或?)命令,其一般格式为:Print|?表达式表列4.消息框语句MsgBox输出项[,按钮值][,标题串]这个语句用来输出数据,并等待用户单击按钮。“输出项”是必须的,可以是常量、变量、函数或字符串表达式。“标题串”是可选的,用做消息框的标题,省略时则把“MicrosoftAccess”作为标题。“按钮值”也是可选的,用来显示按钮的数目与形式,以及图标的样式。8.3选择结构程序设计根据条件在两种或多种情况中选择其一的结构叫做选择结构。将选择结构应用到程序设计上就称为选择结构程序设计,它是通过条件语句来实现的。8.3.1条件语句1.基本格式格式1.If条件Then语句块1Else语句块2EndIf其中的语句块,可以是一个语句或几个语句的组合。这是两分支的选择结构,当条件成立时,执行语句块1;否则,即条件不成立时,执行语句块2。格式2.If条件Then语句块1Else语句块2这是单行结构的条件语句基本格式,含义与格式1完全相同。要注意的是,结尾部分没有EndIf语句。2.简化格式去掉条件语句基本格式中的Else部分,则成为简化格式。格式1.If条件Then语句块EndIf格式2.If条件Then语句块这是单分支结构的条件语句,即只考虑条件成立时要执行的操作。8.3.2条件语句的嵌套不管是条件语句的基本格式,还是简化格式,语句块本身也可以是条件语句,这叫做条件语句的嵌套。典型的是ElseIf格式,其特点是条件的“层层否定”。ElseIf格式的一般形式为:If条件1Then语句块1'条件1成立时,执行语句块1ElseIf条件2Then语句块2'条件2成立时,执行语句块2[ElseIf条件3Then语句块3]'条件3成立时,执行语句块3┆[Else语句块n+1]'上面条件均不成立时,执行语句块n+1EndIf'只有一个条件语句结束行8.3.3多分支选择语句多分支选择语句的一般形式为:SelectCase测试表达式Case表达式1语句块1[Case表达式2To表达式3语句块2][CaseIs关系运算符表达式4语句块3]┆[CaseElse语句块n+1]EndSelect此语句的功能是,根据“测试表达式”的值,从多个语句块中选择符合条件的一个语句块执行。执行过程是,首先计算“测试表达式”的值,然后依次与每个Case后的表达式值或条件进行匹配。如果找到,则执行相应的语句块并退出;如果没有找到,则执行CaseElse后的语句块n+1再退出。8.4循环结构程序设计在一定条件下重复执行某操作的这种结构叫做循环结构。程序设计上,用循环语句来描述循环结构。其中,重复执行的操作叫做循环体。8.4.1For…Next语句这个循环语句的一般格式为:For变量=初值To终值[Step步长]循环体Next[变量]For语句的执行过程如下。1)将初值赋给变量。2)检查变量的值是否“超过”终值,如果其值没有“超过”终值,就执行一次循环体;接着,将“变量+步长”的值赋给变量。重复这个过程,直到变量的值“超过”终值时停止循环,转而执行Next后面的语句。这里所说的“超过”有两种含义,即大于或小于。当步长为正时,判断变量是否大于终值;当步长为负时,判断变量是否小于终值。操作:为了看清楚循环的执行过程,可按F8键单步执行。同时,要选择“视图”菜单的“本地窗口”命令,观察变量的值。8.4.2DoWhile…Loop语句1.语句的一般格式DoWhile条件循环体Loop此语句的执行过程是:首先判断条件,若条件成立(即条件为真),则执行循环体;然后再判断条件,条件成立再执行循环体;……当条件不成立(即条件为假)时结束循环,接着执行它的后续语句。简言之,当条件成立时反复执行循环体,直到条件不成立时为止。2.DoUntil…Loop语句一般格式为:DoUntil条件循环体Loop这是与DoWhile…Loop相对应的循环语句,其执行过程是:当条件不成立(即条件为假)时反复执行循环体,直到条件成立(即条件为真)时结束循环。8.4.3Do…LoopWhile语句1.语句的一般格式Do循环体LoopWhile条件该循环语句的执行过程是:首先执行循环体一次;之后判断条件,若条件成立(即条件为真)则执行循环体;然后再判断条件,条件成立再执行循环体;……直到条件不成立(即条件为假)时为止。2.Do…LoopUntil语句语句的一般格式为:Do循环体LoopUntil条件这是与Do…LoopWhile相对应的循环语句,其执行过程是:首先执行循环体一次;然后判断条件,当条件不成立(即条件为假)时反复执行循环体,直到条件成立(即条件为真)时结束循环。8.4.4循环语句的嵌套所谓循环语句的嵌套,是指一个循环语句的循环体中包含另一个完整的循环语句。嵌套时,内、外层循环语句可以相同,也可以不同。就是说,几种循环语句(共3类5种)可以互相嵌套。8.5过程VBA过程是一段命名的程序,分为子过程和函数过程两种类型。我们把确定一个过程的功能叫做过程定义,将使用一个过程的功能叫做过程调用。8.5.1过程的定义与调用1.子过程1)子过程定义[Public|Private]Sub过程名([形参定义表列])过程体EndSub其中,选Public或省略,表示Sub过程是公有过程,可以在任何模块中调用它;选Private,表示Sub过程是私有过程,它只能被所在模块的过程调用。过程名后圆括号内的变量叫做形式参数(简称形参),形参之间用逗号间隔,定义时不可使用Dim,不可使用定长
本文标题:第8章 模块与VBA程序设计
链接地址:https://www.777doc.com/doc-3252993 .html