版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第8章章 VBA编程与模块编程与模块经过对本章的学习,需求掌握以下内容:1掌握创建模块的根本方法和运用过程的根本方法。2熟习VBA程序设计的根底知识和熟练运用VBA编程环境编辑、调试与运转程序。3掌握简单的VBA程序并实现输入与输出。4掌握创建与窗体和报表相关的类模块和创建规范模块的方法。 第第8章章 VBA编程与模块编程与模块l8.1 VBA概述l8.2 模块根本概念l8.3 VBA程序设计根底l8.4 VBA根本控制构造l8.5 面向对象程序设计8.1 VBA概述概述l8.1.1 VBA简介l8.1.2 VBA编程环境l8.1.3 VBE窗口lVBAVisual Basic For A
2、pplication是微是微软公司软公司Office系列软件中内置的用来开发运系列软件中内置的用来开发运用系统的编程言语。用系统的编程言语。lVBA 是面向对象的程序设计言语。面向对象是面向对象的程序设计言语。面向对象程序设计是一种以对象为根底,以事件来驱程序设计是一种以对象为根底,以事件来驱动对象的程序设计方法。动对象的程序设计方法。 Office中提供的中提供的VBA开发界面称为开发界面称为VBE( Visual Basic Editor ) ,即可视化的,即可视化的Basic 编程环境。编程环境。在在Access中,翻开中,翻开VBE窗口的方法有多种。窗口的方法有多种。在模块对象窗口单击
3、在模块对象窗口单击“新建按钮,或翻开一个已新建按钮,或翻开一个已存在的模块,都会翻开存在的模块,都会翻开VBE窗口。窗口。选择工具菜单中选择工具菜单中“宏子菜单的宏子菜单的“Visual Basic编辑编辑器命令。器命令。运用运用Alt+F11快捷键翻开快捷键翻开VBE界面,或切换数据库界面,或切换数据库窗口和窗口和VBE窗口。窗口。VBE窗口由工具栏、属性窗口、工程资源管理器窗口、代码窗口和立刻窗口组成。工具栏工具栏工程工程窗口窗口属性窗口代码窗口代码窗口规范工具栏8.2 模块根本概念模块根本概念l8.2.1模块的类型l8.2.2模块的组成l模块是Access系统中的一个重要对象,它以VBA
4、(Visual Basic for Application)言语为根底编写,以函数过程(Function)或子过程(Sub)为单元的集合方式存储。l模块是Access数据库6个对象之一,其本质就是没有界面的VBA程序。l模块具有很强的通用性,窗体、报表等对象都可以调用模块内部的过程。l模块包含假设干由VBA代码组成的过程。l在Access中,模块分为:l1. 类模块l2. 规范模块l规范模块,它独立存放于数据库中,供其他对象调用;类模块,为事件过程的集合,用于呼应窗体或窗体控件的各个事件。l例:创建一个规范模块,显示“欢迎运用 信息。 一个规范模块 一个类模块 l过程是模块的组成单元,由VBA
5、代码编写而成。l过程分两种类型:l1Sub过程l2Function过程l1. 过程lSub过程以关键字Sub开场,以End Sub终了,不前往任何值。过程的语法构造如下:lSub 过程称号()l 声明变量l 根本语句lEnd Subl2. 函数l函数不仅能执行一定的命令,还能根据参数计算出对程序有用的数值,并且可以在表达式中被援用。函数的语法构造如下:lFunction 函数称号 As 数据类型l 声明变量l 根本语句lEnd Function8.3 VBA程序设计根底程序设计根底l8.3.1 数据类型l8.3.2 常量与变量l8.3.3 运算符与表达式l8.3.4 函数1字符串型字符串型St
6、ring字符串是一个字符的序列,如字母、数字、标字符串是一个字符的序列,如字母、数字、标点、汉字等都可以定义为字符串类型。点、汉字等都可以定义为字符串类型。字符串数据类型分为定长字符串和变长字符串。字符串数据类型分为定长字符串和变长字符串。定长字符串包含定长字符串包含164K个字符,而变长字符个字符,而变长字符串最多可以包含串最多可以包含20亿个字符。亿个字符。例:例:“123、“AS123、“东华理工大学。东华理工大学。2数值型数值型在在VBA中,数值类型又分为整型、长整型、中,数值类型又分为整型、长整型、单精度浮点型和双精度浮点型。单精度浮点型和双精度浮点型。整型数据占整型数据占2字节空间
7、,其范围为字节空间,其范围为3276832767。长整型数据的存储为长整型数据的存储为4字节字节32位,其范围位,其范围为为21474836482147483647。单精度浮点型数据存储空间也为单精度浮点型数据存储空间也为4字节字节32位。位。双精度浮点型数据存储空间为双精度浮点型数据存储空间为8字节字节64位。位。3布尔型布尔型Boolean布尔布尔Boolean数据类型是一个逻辑值,用数据类型是一个逻辑值,用2字节存储,它的取值只需字节存储,它的取值只需 True或或False。当转换其他的数值类型为当转换其他的数值类型为Boolean值时,值时,0会成会成为为False,非,非0值那么变
8、成值那么变成True。当转换当转换Boolean值为其他的数据类型时,值为其他的数据类型时,False成为成为0,而,而True成为成为-1。4日期型日期型Date用来表示日期和时间,占用用来表示日期和时间,占用8个字节,是浮点个字节,是浮点型数值方式。定义日期类型时必需用型数值方式。定义日期类型时必需用“#符括符括起来。起来。例:例:#11/13/88# 、#May 1# 其他的数值类型要转换为其他的数值类型要转换为Date型时,小数点左型时,小数点左边的值表示日期信息,而小数点右边值那么表边的值表示日期信息,而小数点右边值那么表示时间。午夜为示时间。午夜为0而中午而中午0.5。负整数表示。
9、负整数表示1899年年12月月30日之前的日期。日之前的日期。5货币型货币型Currency该类型以该类型以8字节字节64位进展存储,并且小数点位进展存储,并且小数点位数是固定的。位数是固定的。6变体型变体型Variant未被显式声明用如未被显式声明用如Dim、Private、Public或或Static等语句为其他类型变量的数据类型。等语句为其他类型变量的数据类型。这种类型的数据可以灵敏地转换为任何数据类型,这种类型的数据可以灵敏地转换为任何数据类型,当它被赋予不同值时,将自动进展类型的转换。当它被赋予不同值时,将自动进展类型的转换。Variant数据类型是一种特殊的数据类型,除了数据类型是
10、一种特殊的数据类型,除了定长字符串类型和用户定义类型之外,它可以包定长字符串类型和用户定义类型之外,它可以包含任何类型的数据。含任何类型的数据。7用户自定义型用户自定义型该数据类型可以包含一个或多个数据类型。格式:该数据类型可以包含一个或多个数据类型。格式: Type数据类型名数据类型名 数据类型元素名数据类型元素名 as 系统数据类型名系统数据类型名 End Type例:定义一个数据类型用于表示学生信息,包括例:定义一个数据类型用于表示学生信息,包括姓名、出生日期及性别等。再将某一个学生的信姓名、出生日期及性别等。再将某一个学生的信息输入到这个自定义数据类型的变量中。息输入到这个自定义数据类
11、型的变量中。VBA运用常量、变量来存储值。用来保管在程序运转期间数据。一常量在程序运转过程中,其值不会被改动的量称为常量。在VBA中有三类常量:直接常量,如:344、3.14159、-23等;固有常量,如: acForm、adAddNew、vbCuruency等;系统定义常量,如True、False、Null等。l符号常量l 在程序中,某个常量多次被运用,那么可以运用一个符号来替代该常量。 l VBA中运用关键字Const 声明符号常量。l格式:l Const 常量名 As 类型=常数表达式l如:l Const PI=3.1415926l Const constr=“abcdef例:根据输入半
12、径的值,求出圆的面积。Const p = 3.14159Sub area()Dim r As IntegerDim s As Singlep = 3.14r = InputBox(请输入半径)s = p * r * rDebug.Print sEnd Sub二变量二变量程序运转过程中,值可以改动的量。程序运转过程中,值可以改动的量。1、变量命名规那么、变量命名规那么变量名必需以字母或汉字开头,由字母、变量名必需以字母或汉字开头,由字母、汉字、数字或下划线组成不能含有小汉字、数字或下划线组成不能含有小数点和空格,长度不超越数点和空格,长度不超越255个字符个字符的字符串;的字符串;不能运用不能运
13、用VBA中的关键字;中的关键字;VBA中不区分变量名的大小写。中不区分变量名的大小写。2、变量声明 运用变量之前,普通必需先声明变量。运用变量之前,普通必需先声明变量。 (1)用用Dim语句显式声明变量语句显式声明变量Dim 变量名变量名 As 类型类型As部分缺省,创建的变量为变体类型部分缺省,创建的变量为变体类型Dim i As integer , sum As single本章目录本章目录阐明:为了方便定义,可在变量名后加类型符来替代“AS 类型。此时变量名与类型符之间不能有空格。例: Dim i As integer , sum As single等价于: Dim i%, sum!例:
14、 Dim dp4 As string 等价于: Dim dp4$用类型标志符声明变量:标志符标志符数据类数据类型型% %整型整型& &长整型长整型!单精度单精度型型# #双精度双精度型型货币型货币型字符串字符串型型 一个一个Dim语句可以同时定义多个变量,但每个语句可以同时定义多个变量,但每个变量必需有本人的类型声明,类型声明不能共用,变量必需有本人的类型声明,类型声明不能共用,否那么为变体型否那么为变体型 。例如:例如:Dim m,n As Integer, x,y As Single 那么创建了变体型变量那么创建了变体型变量m、x,整型变量,整型变量n和单和单精度型变量精度
15、型变量y 。 练习:练习:Dim p1 as string , p5 as string 与语句:与语句:Dim p1,p5 as string的区别?的区别? 对字符串变量,根据其存放的字符串长度能对字符串变量,根据其存放的字符串长度能否固定,其定义方法有两种:否固定,其定义方法有两种: Dim Dim 字符串变量名字符串变量名 AS String AS String Dim Dim 字符串变量名字符串变量名 AS Strint AS Strint* *字符数字符数 例:例: Dim s1 As String Dim s1 As String 声明变长字符串声明变长字符串 Dim s2 As
16、 StringDim s2 As String* *50 50 声明定长字符串变量声明定长字符串变量,可存放,可存放5050个字符个字符(2)隐式声明隐式声明 VBA中允许对运用的变量未进展声明而直中允许对运用的变量未进展声明而直接运用不定义而直接运用的变量,称接运用不定义而直接运用的变量,称为隐式声明,其类型为为隐式声明,其类型为 Variant 类型。类型。留意留意: 在通用声明处加在通用声明处加 Option Explicit 语语句可强迫显式声明变量。句可强迫显式声明变量。练习:练习:1、以下对变量的声明中,不正确的选项是 A)Dim xinxizhongxin as integerB
17、)Dim b as integerC)Dim x_x as integerD)Dim yy as integer2、以下符号中,( )不是VBA的合法变量名。A)Inte B)a123C)123a D)x_128.3.3 运算符与表达式运算符与表达式 l1 1算术运算符与算术表达式算术运算符与算术表达式l2 2字符串衔接符与字符串表达式字符串衔接符与字符串表达式l3 3关系运算符与关系表达式关系运算符与关系表达式l4 4逻辑运算符及其表达式逻辑运算符及其表达式l5 5对象运算符与对象运算表达式对象运算符与对象运算表达式lVBA中根本的运算符有:算术运算符、关系运算符、逻辑运算符、字符串运算符。
18、l表达式是由运算符、函数和数据等内容组合而成。l1算术运算符与算术表达式l算术运算符,用来执行简单的数学运算。l算术运算符l+ 加、- 减 、* 乘 、/ 除l 整除、MOD求余 、乘方l练习:4+56*7/8 MOD 9例如与优先级例如与优先级MOD MOD 求余运算符求余运算符假设操作数是小数假设操作数是小数, ,系统会四舍五入变成整数系统会四舍五入变成整数后再运算;后再运算;假设被除数是负数假设被除数是负数, ,余数也是负数余数也是负数, ,反之反之, ,假设假设被除数是正数被除数是正数, ,余数也是正数。余数也是正数。( (余数的符号余数的符号同被除数同被除数) ) 例:例:10 MO
19、D 2=0 12 MOD 5=2 10 MOD 2=0 12 MOD 5=2 -12.7 MOD 5=-3 -12.7 MOD 5=-3练习:练习:19.1 MOD -519.1 MOD -52、关系运算符与关系表达式、关系运算符与关系表达式将两个操作数进展大小比较,结果为逻辑值。留意:字符串比较,那么按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止。3、字符串衔接符与字符串表达式、字符串衔接符与字符串表达式l+ +:衔接字符串:衔接字符串 l& &:可以将不同类型变量衔接成字符串:可以将不同类型变量衔接成字符串l留意:留意:l+ + 两旁的操作数应均为字符型;两
20、旁的操作数应均为字符型; 1)1)数值型数值型: :那么进展算术加运算。那么进展算术加运算。 2)2)一个为数字字符,另一个为数值,自动一个为数字字符,另一个为数值,自动将数将数字字符转换为数值后进展算术加。字字符转换为数值后进展算术加。 3)3)一个为非数字字符,另一个为数值型,一个为非数字字符,另一个为数值型,出错。出错。例如:123 + 456 结果 123456 123 & 456 结果 123456 运用 与+的区别:abcdef & 12345 结果为 abcdef12345abcdef +12345 结果为 出错123 & 456 结果为 123456 1
21、23 + 456 结果为 5794、逻辑运算符及其表达式、逻辑运算符及其表达式l将操作数进展逻辑运算,结果是逻辑值表达式表达式1 1、书写规那么、书写规那么 (1) (1) 运算符不能相邻。例运算符不能相邻。例a+ -ba+ -b是错误的。是错误的。 (2) (2) 乘号不能省略。例乘号不能省略。例x x 乘以乘以y y 应写成:应写成:x x* *y y。 (3) (3) 括号必需成对出现,均运用圆括号。括号必需成对出现,均运用圆括号。 (4) (4) 表达式从左到右在同一基准上书写,表达式从左到右在同一基准上书写,无高低无高低2 2、运算优先级、运算优先级算术运算符算术运算符 衔接运算符衔
22、接运算符 关系运算符关系运算符 逻辑运逻辑运算算例:错误的例:错误的VBAVBA表达式:表达式:3=x=7 3=x=7 正确的正确的VBAVBA表达式:表达式:3 3=x And x =7=x And x =3 and (a&b)c的值是?l1. 数学函数l2. 字符串函数l3. 日期/时间函数 l4. 类型转换函数1. 数学函数数学函数Int() 功能功能:对数值表达式取整对数值表达式取整,取小于或等于取小于或等于X的最大值。的最大值。例:例:INT(12.8)=12 INT(-12.8)=-13Fix() Round(,m) 功能:四舍五入函数。功能:四舍五入函数。留意:区分取整函
23、数留意:区分取整函数Int、Fix、Round之间的异同之间的异同练习练习:1、Int-3.25的结果是 2、表达式Fix-3.25和Fix3.75的结果分别是 A)-3,3 B)-4,3 C)-3,4 D)-4,4lSqr(Sqr() ) :平方根函数,数值表:平方根函数,数值表达式达式00lRnd(Rnd() ) :前往介于:前往介于0101之间的之间的随机数。随机数。 即包括即包括0 0,但不包括,但不包括1 1l例:例:l产生产生0 ,100)0 ,100)之间的双精度数:之间的双精度数:RndRnd* *100100l产生产生00,9999的随机整数:的随机整数:IntInt100
24、100 * * Rnd )Rnd );l产生产生00,100100的随机整数:的随机整数:IntInt101 101 * * Rnd )Rnd );l产生产生11,100100的随机整数:的随机整数:Int (100 Int (100 * * Rnd Rnd + 1 )+ 1 )l假设要产生假设要产生30-5030-50之间的随机数?之间的随机数?2. 字符串函数字符串函数Len(或或) Left(,) Right(,) Mid(,) uinstr(起始位置,字串1,字串2,比较方式),功能:前往字串2在字串1中最早出现的位置,前往值是一个整数。u比较方式其值可以为0、1和2。u0:缺省值,做
25、二进制比较。u1:不区分大小写的文本比较。u2:做基于数据库中包含信息的比较。u例:知Strl=“123456,Str2=“56。us=InStr(strl,str2) 前往5us=InStr(3, “aBCdAb, “a,1) 前往5uSpace(Space() ) uUcase(Ucase() ) uLcase(Lcase() ) uLTrim(LTrim() ) uRTrim(RTrim() ) uTrim(Trim()3. 日期时间函数日期时间函数Date() Time() Now() Year() Month() Day() Weekday() 4. 类型转换函数类型转换函数Asc(
26、) :功能:前往字符串表达式首字符的功能:前往字符串表达式首字符的ASCII码值。码值。例:例:Ascabcdefg前往值为前往值为97Chr() 功能功能 :前往以表达式的值为:前往以表达式的值为ASCII码值的字码值的字符符例:例:Chr65前往前往AChr(13)回车符回车符Chr(10)换行符换行符Chr(13)&Chr(10)回车符回车符换行符组合换行符组合uStr(Str()u功能:将数值表达式值转换成字符串。功能:将数值表达式值转换成字符串。u留意:会在字符串的前面保管一个空格留意:会在字符串的前面保管一个空格来表示正负。来表示正负。u例:例:Str ( 99 ) Str
27、 ( 99 ) 前往前往 99 99 uVal(Val()u功能:将数字字符串转换成数值型数字功能:将数字字符串转换成数值型数字u例:例:Val ( Val ( “ 3 45 3 45 ) )前往前往345345;u Val ( 76ah9 ) Val ( 76ah9 )前往前往7676练习:练习:S1=Chr(Asc(“abcd)-32)S2=abS2=S2 & Chr(Asc(Mid(S2, 2, 1)+2)K=Len(Str(109)5、输入/输出语句1输入语句输入语句InputBox InputBox 提示信息提示信息,标题标题,默许值默许值,横坐横坐标标,纵坐标纵坐标功能:提
28、示用户输入一个字符串或数值。功能:提示用户输入一个字符串或数值。例:例:strName=InputBox(请输入他的名字:请输入他的名字:, , 李四李四)l例2、单击窗体,用Inputbox函数,从键盘上输入圆半径,求出圆的面积,并在窗体上输出。面积公式分别为:r2。 MsgBox MsgBox 音讯音讯,按钮方式按钮方式,标题标题 功是:在对话框中显示音讯,等待用户单击按钮,前往功是:在对话框中显示音讯,等待用户单击按钮,前往一个整数,该值代表用户单击了哪个按钮。一个整数,该值代表用户单击了哪个按钮。例:例:MsgBox MsgBox 欢迎运用欢迎运用 & Chr(13) &
29、; VBA & Chr(13) & VBA进展程序设计进展程序设计, , vbOKOnly, vbOKOnly, 欢迎欢迎 2输出语句输出语句MsgBoxMsgBox按钮设置 第第3个按钮为默许个按钮为默许512VBDefaultButton3第第2个按钮为默许个按钮为默许 56VBDefaultButton2第第1个按钮为默许个按钮为默许 0VBDefaultButton1默许默许按钮按钮 信息图标信息图标 64VBInformation警告信息图标警告信息图标 48VBExclamation讯问信息图标讯问信息图标 32VBQuestion关键信息图标关键信息图标 16VB
30、Critical图标图标类型类型 重试、取消按钮重试、取消按钮 5VBRetryCancel是、否按钮是、否按钮 4VBYesNo是、否、取消按钮是、否、取消按钮 3VBYesNoCancel终止、重试、忽略按钮终止、重试、忽略按钮 2VBAboutRetryIgnore确定、取消按钮确定、取消按钮 1VBOkCancel确定按钮确定按钮 0VBOkOnly按钮按钮数目数目 描描 述述值值内内 部部 常常 数数分组分组 本章目录本章目录MsgBox所选按钮前往值 本章目录本章目录内部常数返回值被单击的按钮vbOk1确定vbCancel2取消vbAbort3终止vbRetry4重试vbIgnor
31、e5忽略vbYes6是vbNo7否练习:8.4 VBA根本控制构造根本控制构造l8.4.1 语句概述l8.4.2 VBA程序根本构造8.4.1语句概述语句概述l1程序语句书写l2声明语句l3赋值语句1、程序语句书写1书写规那么 通常将一个语句写在一行。语句较长,一行写不下时,可以运用续行符(_)将语句延续写在下一行。可以运用冒号(:)将几个语句分隔写在一行中。VBA代码不区分字母的大小写。 例如:例如:mycount = 10 mycount = 10 * * x + 7 x + 7 * * y + z / 5 y + z / 5mycount = 10 mycount = 10 * * x
32、+ 7 x + 7 * * y _ y _ + z / 5 + z / 5Text1.Value = Hello : Text1.BackColor = 255Text1.Value = Hello : Text1.BackColor = 2552 注释语句注释语句 在在VBA程序中,注释可以经过以下两种方式实现:程序中,注释可以经过以下两种方式实现: 运用运用Rem语句语句 运用格式为:运用格式为:Rem 注释语句注释语句 运用单引号运用单引号“运用格式为:运用格式为: 注释语句注释语句例例:定义变量并赋值。定义变量并赋值。Rem 定义两个变量定义两个变量Dim Str1,Str2 Str1
33、=: Rem 注释,在语句之后要用冒号隔注释,在语句之后要用冒号隔开开Str2=ChengDu 这也是一条注释。这时这也是一条注释。这时无需运用冒号无需运用冒号2. 声明语句声明语句 声明语句用于命名和定义常量、变量、数组和声明语句用于命名和定义常量、变量、数组和过程。过程。例:分析程序段:例:分析程序段:Sub Sample()Const PI=3.14159Dim i As IntegerEnd Sub3. 赋值语句赋值语句 赋值语句是为变量指定一个值或表达赋值语句是为变量指定一个值或表达式。运用格式为:式。运用格式为:Let变量名变量名=值或表达式值或表达式例:例:Dim txtAge
34、As Integer txtAge=21条件构造:又称选择构造,根据条条件构造:又称选择构造,根据条件选择执行途径。件选择执行途径。循环构造:反复执行某一段程序语循环构造:反复执行某一段程序语句。句。条件语句1语句2YN语句1语句2三种根本构造三种根本构造l1、顺序 2、选择 3、循环条件TF语句l在程序设计中,顺序构造是一类最简单的构造。这种构造的程序是按“从上到下的顺序依次执行语句的。 l例:设计一个窗体,要求当用户点击按钮时,可以调用程序计算两个变量a、b的和值s。知a、b变量分别为整形数值。天能否下雨?爬山在家看电视终了没有下雨下雨lIF语句语句l 单路分支:单路分支:l 格式一:格式
35、一:If If Then Then End IfEnd If格式二:格式二: If If Then Then 练习练习:在窗体中添加一个称号为Command1的命令按钮,然后编写如下事件代码:Private Sub Command1_Click() A=75 If A60 Then I=1 If A70 Then I=2 If A80 Then I=3 If A90 Then I=4 MsgBox IEnd Sub窗体翻开运转后,单击命令按钮,那么音讯框的输出结果是_。双路分支双路分支格式一:格式一:If Then Else End If格式二:格式二:If If Then Then Else
36、 Else 2的值。计算0150122xxxxxxy例2:恣意输入一个数,判别它能否为奇偶数。练习: 判别x的值,假设是大于0的值,弹出音讯“x是正数;假设是小于0的值,弹出音讯“x是负数。【例【例8.6】试用】试用If Then 语句构造编程实现语句构造编程实现由由x值计算表达式值计算表达式y的值。的值。 0000 xxxxxy程序段程序段1:程序段程序段2:If x0 Then If x0 Theny=sqr(x)y=sqr(x)ElseElseIf x=0 ThenIf x=0 Theny=0y=0ElseElsey=abs(x)y=abs(x)End IfEnd IfEnd If(1)
37、 在窗体中添加一个称号为在窗体中添加一个称号为Command1的命令按钮,然后编写如下事的命令按钮,然后编写如下事件代码:件代码:Private Sub Command1_Click()a = 75If a 60 Thenk = 1ElseIf a 70 Thenk = 2ElseIf a 80 Thenk = 3ElseIf a 90 Thenk = 4End If MsgBox kEnd Sub窗体翻开运转后,单击命令按钮,那么音讯框的输出结果是窗体翻开运转后,单击命令按钮,那么音讯框的输出结果是A) 1B) 2C) 3D) 4Private Sub Command1_Click() a
38、= 75 If a 60 Then k = 1 End If If a 70 Then k = 2 End If If a 80 Then k = 3 End If If a 90 Then k = 4 End If MsgBox kEnd Sub2. Select Case语句Select Case语句可以将相应的表达式与多个值进展比较,验证适宜之后再执行,其根本语法构造如下:Select Case 表达式Case 可选值1根本语句1Case 可选值2根本语句2Case 可选值n根本语句nCase Else根本语句n+1End SelectSelect Case 表达式表达式Case 表达式
39、表达式1表达式的值与表达式表达式的值与表达式1的值相等时执行的语句序的值相等时执行的语句序列列Case 表达式表达式2 To 表达式表达式3表达式的值介于表达式表达式的值介于表达式2的值和表达式的值和表达式3的值之的值之间时执行的语句序列间时执行的语句序列Case Is 关序运算符关序运算符 表达式表达式4表达式的值与表达式表达式的值与表达式4的值之间满足关系运算的值之间满足关系运算为真时执行的语句序列为真时执行的语句序列Case Else上面的情况均不符合时执行的语句序列上面的情况均不符合时执行的语句序列End SelectCase表达式可以是以下四种格式之一:表达式可以是以下四种格式之一:
40、单一数值或一行并列的数值,用来与表达式的值相比较,单一数值或一行并列的数值,用来与表达式的值相比较,成员间以逗号隔开,例如:成员间以逗号隔开,例如:Case 1、Case 1,3,5;由关键字由关键字To分隔开的两个数值或表达式之间的范围,其分隔开的两个数值或表达式之间的范围,其中前一个值必需比后一个值小,否那么没有符合条件中前一个值必需比后一个值小,否那么没有符合条件的情况,例如:的情况,例如:Case 0 To 10、Case “A To “Z;关键字关键字Is接关系运算符,如接关系运算符,如、=、,后,后面再接变量或准确的值,例如:面再接变量或准确的值,例如:Case Is10;Case
41、 Else,在前面的,在前面的Case条件都不满足时执行。条件都不满足时执行。留意,前留意,前3种条件方式可以混用,多个条件之间用逗种条件方式可以混用,多个条件之间用逗号分隔开,比如:号分隔开,比如:Case 3,5,Is10。 【例【例8.7】以下】以下Case语句中错误的选项是语句中错误的选项是A) Case 0 To 10B) Case Is10C) Case Is10 And Is10【例8.8】用Select Case End Select构造来实现例11.6中由x值计算表达式y的值。Select Case xCase Is 0y=sqr(x)Case 0y=0Case Is 0时:
42、假设循环变量值时:假设循环变量值终值,循环终了,退出循环。终值,循环终了,退出循环。步长步长=0时:假设循环变量值时:假设循环变量值终值,一次也不执行循环。终值,一次也不执行循环。步长步长=终值,循环继续,执行步骤;终值,循环继续,执行步骤;假设循环变量值假设循环变量值终值,循环终了,退出循环。终值,循环终了,退出循环。 执行循环体;执行循环体; 循环变量值添加步长循环变量值添加步长(循环变量循环变量=循环变量循环变量+步长步长),程序跳转至步,程序跳转至步骤。骤。提示:假设提示:假设ForNext语句中没有给出步长,那默许步长为语句中没有给出步长,那默许步长为1。【例【例8.9】 计算计算1
43、+2+3+4+100的和。的和。方法方法1: s=0For i=1 To 100s=s+iNext i方法方法2: s=0 For i=100 To 1 Step -1 s=s+iNext i3. WhileWend语句在循环控制语句中,还有一类语句是WhileWend语句,只需条件表达式为真就会反复执行循环体。该语句的语法构造如下:While 条件表达式 根本语句Wend【例【例8.10】(1) 在窗体中运用一个文本框在窗体中运用一个文本框(名为名为x)接受输接受输入值,有一个命令按钮入值,有一个命令按钮test,事件代码如下:,事件代码如下:Private Sub test_Click()
44、 y=0For i=0 To Me!xy=y+2*i+1Next iMsgBox yEnd Sub翻开窗体后,假设经过文本框输入值为翻开窗体后,假设经过文本框输入值为3,单击命令,单击命令按钮,输出的结果是按钮,输出的结果是 【1】 。【例【例8.11】设有如下窗体单击事件过程:】设有如下窗体单击事件过程:Private Sub Form_Click()a = 0For i = 1 To 6 Select Case i Case 1, 3, 5 a = a + 1 Case 2, 4, 6 a = a + 2 End Select Next iMsgBox aEnd Sub翻开窗体运转后,单击
45、窗体,那么音讯框的输出结果是翻开窗体运转后,单击窗体,那么音讯框的输出结果是A) 6 B) 7C) 8D) 9【例【例8.12】设有如下过程:】设有如下过程:x = 1Dox = x+2Loop Until_运转程序,要求循环体执行运转程序,要求循环体执行3次后终了循环,次后终了循环,空白处应填入的语句是空白处应填入的语句是A) x=7B) x=7D) x7六、过程调用六、过程调用Public|PrivateStaticSub 子过程名子过程名()Exit SubEnd Sub子过程的调用方式有两种:子过程的调用方式有两种:Call 子过程名子过程名() 或或 子过程名子过程名 Public|
46、PrivateStaticFunction函数过程名函数过程名()As数据类型数据类型函数过程名函数过程名=Exit Function函数过程名函数过程名=End Function函数过程的调用方式只需一种:函数过程名函数过程的调用方式只需一种:函数过程名()。七、参数传送七、参数传送 过程定义时可以设置一个或多个形参过程定义时可以设置一个或多个形参(方式参数的简称方式参数的简称),多,多个形参之间用逗号分隔。形参的完好定义格式为:个形参之间用逗号分隔。形参的完好定义格式为:OptionalByVal| ByRefParamArray varname( )As type= defaultval
47、ue其中,其中,varname为形参称号,必需的;为形参称号,必需的;type为数据类型,为数据类型,可选;可选;Optional表示参数不是必需的,可选;表示参数不是必需的,可选;ParamArray指明最后这个参数是一个指明最后这个参数是一个Variant元素的元素的Optional数组项,数组项,可选;可选;Defaultvalue为缺省值,任何常数或常数表达式,可为缺省值,任何常数或常数表达式,可选;选;ByVal表示参数按值传送,可选;表示参数按值传送,可选;ByRef表示参数按地表示参数按地址传送,缺省选项,可选。址传送,缺省选项,可选。含参数的过程被调用时,主调过程中的调用式必需
48、提供相含参数的过程被调用时,主调过程中的调用式必需提供相应的实参,并经过实参向形参传送的方式完成过程操作。应的实参,并经过实参向形参传送的方式完成过程操作。关于实参向形参的数据传送,必需掌握以下要点:关于实参向形参的数据传送,必需掌握以下要点: 实参可以是常量、变量或表达式。实参可以是常量、变量或表达式。 实参数目和类型应该与形参数目和类型相匹配。实参数目和类型应该与形参数目和类型相匹配。除非形参定义含除非形参定义含Optional和和ParamArray选项,选项,参数、类型能够不一致。参数、类型能够不一致。 传值调用传值调用(By Val选项选项)的的“单向作用方式与传单向作用方式与传址调
49、用址调用(ByRef选项选项)的的“双向作用方式。对此,双向作用方式。对此,下面做进一步的阐明。下面做进一步的阐明。【例【例8.13】在窗体中添加一个称号为】在窗体中添加一个称号为Command1的命令的命令按钮,然后编写如下事件代码:按钮,然后编写如下事件代码:Private Sub Command1_Click()Dim x As Integer, y As Integerx=12:y=32Call p(x,y)MsgBox x*yEnd SubPublic Sub p(n As Integer, ByVal m As Integer)n=n Mod 10m=m Mod 10End Sub
50、窗体翻开运转后,单击命令按钮,那么音讯框的输出结窗体翻开运转后,单击命令按钮,那么音讯框的输出结果为果为 【1】 。【例【例8.14】在窗体中添加一个称号为】在窗体中添加一个称号为Command1 的命令按钮,然后编写的命令按钮,然后编写如下程序:如下程序:Public x As integerPrivate Sub Command1_Click()x10Call s1Call s2MsgBox xEnd SubPrivate Sub s1()xx+20End SubPrivate Sub s2()Dim x As integerxx+20End Sub窗体翻开运转后,单击命令按钮,那么音讯框
51、的输出结果为窗体翻开运转后,单击命令按钮,那么音讯框的输出结果为A) 10 B) 30 C) 40 D) 50【例【例8.15】在窗体中添加一个命令按钮】在窗体中添加一个命令按钮(称号为称号为Command1),然后编写如下代码:,然后编写如下代码:Private Sub Command1_Click()Static b As integerbb+1End Sub窗体翻开运转后,三次单击命令按钮后,变窗体翻开运转后,三次单击命令按钮后,变量量b 的值是的值是 【7】 。l4. GoTo语句l经过该语句可以无条件地将程序流程转移到VBA代码中的指定行。首先在相应的语句前参与行号,然后在程序需求转
52、移的地方参与GoTo语句,这类语句普通跟随在条件表达式之后,以防出现死循环。lGoTo语句应尽量少用,这些语句会降低程序代码的可读性,并且难以维护和调试。普通GoTo语句都可以经过其他的条件语句和循环语句来替代。5. WithEnd With语句With语句可以对某个对象执行一系列的语句,而不用反复指出对象的称号。例如,要改动一个对象的多个属性,可以在With控制构造中加上属性的赋值语句,这时只是援用一次对象,而不是在每个属性赋值时都要援用它。其语法格式如下:With 对象 语句End With8.3.3 Exit语句l运用运用Exit语句可以方便地退出循环、函数或过程,直接跳过相应语句可以方
53、便地退出循环、函数或过程,直接跳过相应的语句或终了命令。经过的语句或终了命令。经过Exit关键字可以终止一部分程序的执行,关键字可以终止一部分程序的执行,更灵敏地控制程序的流程。更灵敏地控制程序的流程。l在程序的执行过程中,假设程序的执行曾经到达预期目的,后在程序的执行过程中,假设程序的执行曾经到达预期目的,后面的语句不需求继续执行下去,可以经过面的语句不需求继续执行下去,可以经过Exit语句强行终了相应语句强行终了相应代码的执行。代码的执行。8.4 VBA的编程环境l1. VBE界面l1工程资源管理器窗口。l工程资源管理器窗口的列表框中列出了在运用程序中用到的模块文件。l2属性窗口。l属性窗
54、口列出了所选对象的各种属性,可以“按字母序和“按分类序查看属性。l3代码窗口。l在代码窗口中可以输入和编辑VBA代码。l2. 在代码窗口中编程l正确地编写正确地编写VBA运用程序的代码,首先要留运用程序的代码,首先要留意的就是程序的书写格式。意的就是程序的书写格式。l1注释语句。注释语句。l在在VBA程序中,注释可以经过运用程序中,注释可以经过运用Rem语句语句或用单引号实现。或用单引号实现。 l2连写和换行。连写和换行。l通常情况下,程序语句一句一行,但对于非通常情况下,程序语句一句一行,但对于非常短小的语句,可以在一行中写几句代码,常短小的语句,可以在一行中写几句代码,这时只需用这时只需用
55、“:分开即可。对于太长的代码分开即可。对于太长的代码可以用空格加下划线可以用空格加下划线“ _将其截断为多行。将其截断为多行。8.5 面向对象程序设计面向对象程序设计lVBA与传统的编程言语的重要区别就是它是面向对与传统的编程言语的重要区别就是它是面向对象的,对象是象的,对象是Visual Basic程序设计言语的中心。程序设计言语的中心。l对象具有属性、方法和事件。属性是一个对象的特对象具有属性、方法和事件。属性是一个对象的特征,它定义了对象的大小、颜色、位置等特征,可征,它定义了对象的大小、颜色、位置等特征,可以经过修正对象的属性值来修正对象的特征。以经过修正对象的属性值来修正对象的特征。
56、l方法是对象能执行的动作,经过这个动作能实现相方法是对象能执行的动作,经过这个动作能实现相应的功能或改动对象的属性。应的功能或改动对象的属性。l事件是一个对象可以识别的动作,如鼠标的单击或事件是一个对象可以识别的动作,如鼠标的单击或双击,控件的挪动等,事件过程对被触发的事件作双击,控件的挪动等,事件过程对被触发的事件作出呼应,执行相应的功能。出呼应,执行相应的功能。l在Microsoft Access中,常用的对象有23个,各对象的称号及阐明如表8-5所示。对象名称对象名称说明说明对象名称对象名称说明说明Application应用程序应用程序Reports当前环境下报表的集合当前环境下报表的集
57、合DBEngine数据库管理系统数据库管理系统Workspaces工作区间工作区间Docmd运行运行Visual Basic具体命令的对象具体命令的对象Parameter参数参数Forms当前环境下窗体的集合当前环境下窗体的集合User用户用户Database数据库数据库TableDef表表Document文档文档Recordset记录记录Control控件控件Relation关系关系Container容器容器Module模块模块Form表单表单QueryDef查询查询Index索引索引Section节对象节对象Group用户组用户组Property属性属性DebugDebug窗口对象窗口对象
58、Field字段字段Screen屏幕对象屏幕对象l各类对象及属性的访问方式:各类对象及属性的访问方式:l1援用已翻开的窗体或报表援用已翻开的窗体或报表l首先输入报表或窗体集合的称号,分别为首先输入报表或窗体集合的称号,分别为Reports和和Forms,再经过,再经过“!衔接相应报!衔接相应报表或窗体的称号。表或窗体的称号。l2援用相应的子窗体和子报表援用相应的子窗体和子报表l首先输入报表或窗体集合的称号,分别为首先输入报表或窗体集合的称号,分别为Reports和和Forms,经过,经过“!衔接相应报表!衔接相应报表或窗体的称号,再经过或窗体的称号,再经过“!衔接相应子报表!衔接相应子报表或子窗
59、体的称号,再经过或子窗体的称号,再经过“.符号加符号加Report或或Form属性来访问。属性来访问。l3援用控件或属性值援用控件或属性值l供应商窗体上的供应商窗体上的“供应商供应商ID文本框控件的数文本框控件的数据的援用方式为据的援用方式为“Forms!供应商供应商!供应商供应商ID;l控件的有效性属性的援用方式为控件的有效性属性的援用方式为“Forms!供供应商应商!供应商供应商ID.enabled;l控件的默许值属性的援用方式为控件的默许值属性的援用方式为“Forms!供供应商应商!供应商供应商ID.DefaultValue。l4援用窗体节、报表节或报表的组级别援用窗体节、报表节或报表的
60、组级别l输入窗体和报表的标识符,加上输入窗体和报表的标识符,加上“.以及相以及相应的节或组级别称号。应的节或组级别称号。l还可以运用还可以运用Section属性,经过编号来援用属性,经过编号来援用节或组级别的称号。节或组级别的称号。lSection属性用于区分窗体中的节和组级别,属性用于区分窗体中的节和组级别,该属性值属于该属性值属于Integer类型,对应一个常量。类型,对应一个常量。8.6 面向对象程序设计实例l1. 设计具有登录功能的窗体l1设计一个数据表,其中包含以下两个字段:lusername文本型,长度为10,用来存放用户名lpassword文本型,长度为10,用来存放密码l2设计一个名为“登录界面的窗体 。l3保管代码后,退出VBA环境,切换到窗体的窗体视图。 l2. 四那么混合
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026防火稽查员面试题及答案
- 2026高级投诉专员面试题及答案
- 2026公考职位认知面试题及答案
- 2026函授大专面试题目及答案
- 4.2 图形的全等 同步练习【北师】七下数学一课一练
- 共青团历年试题及答案
- 工业能源考试题及答案
- 2024年沥青混合料搅拌设备企业组织架构及部门职责
- 自考上知识点总结
- 禽流感疫情下的防控效果评估
- 项目投资意向书格式范本(标准)
- 农民工 合同模板
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 《送东阳马生序》拼音版
- 社区获得性肺炎病例讨论
- GA/T 2095-2023危险化学品道路运输通行路线规划指南
- 客户之声(VOC)收集与应用
- 变更申请单模板
- 劳动纠纷应急预案
- 容量瓶的校正技术
- 铁路建设工程风险管理技术规范
评论
0/150
提交评论