面向对象的程序设计语言——VBA.ppt_第1页
面向对象的程序设计语言——VBA.ppt_第2页
面向对象的程序设计语言——VBA.ppt_第3页
面向对象的程序设计语言——VBA.ppt_第4页
面向对象的程序设计语言——VBA.ppt_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章 VBA编程与模块,通过对本章的学习,需要掌握以下内容: (1)掌握创建模块的基本方法和使用过程的基本方法。 (2)熟悉VBA程序设计的基础知识和熟练使用VBA编程环境编辑、调试与运行程序。 (3)掌握简单的VBA程序并实现输入与输出。 (4)掌握创建与窗体和报表相关的类模块和创建标准模块的方法。,第8章 VBA编程与模块,8.1 VBA概述 8.2 模块基本概念 8.3 VBA程序设计基础 8.4 VBA基本控制结构 8.5 面向对象程序设计,8.1 VBA概述,8.1.1 VBA简介 8.1.2 VBA编程环境 8.1.3 VBE窗口,VBA(Visual Basic For App

2、lication)是微软公司Office系列软件中内置的用来开发应用系统的编程语言。 VBA 是面向对象的程序设计语言。面向对象程序设计是一种以对象为基础,以事件来驱动对象的程序设计方法。,8.1.1 VBA简介,Office中提供的VBA开发界面称为VBE( Visual Basic Editor ) ,即可视化的Basic 编程环境。 在Access中,打开VBE窗口的方法有多种。 在模块对象窗口单击“新建”按钮,或打开一个已存在的模块,都会打开VBE窗口。 选择工具菜单中“宏”子菜单的“Visual Basic编辑器”命令。 使用Alt+F11快捷键打开VBE界面,或切换数据库窗口和VB

3、E窗口。,8.1.2 VBA编程环境,VBE窗口由工具栏、属性窗口、工程资源管理器窗口、代码窗口和立即窗口组成。,8.1.3 VBE窗口,标准工具栏,8.2 模块基本概念,8.2.1模块的类型 8.2.2模块的组成,8.2.1模块的类型,模块是Access系统中的一个重要对象,它以VBA(Visual Basic for Application)语言为基础编写,以函数过程(Function)或子过程(Sub)为单元的集合方式存储。 模块是Access数据库6个对象之一,其实质就是没有界面的VBA程序。 模块具有很强的通用性,窗体、报表等对象都可以调用模块内部的过程。,模块包含若干由VBA代码组

4、成的过程。 在Access中,模块分为: 1. 类模块 2. 标准模块 标准模块,它独立存放于数据库中,供其他对象调用;类模块,为事件过程的集合,用于响应窗体或窗体控件的各个事件。 例:创建一个标准模块,显示“欢迎使用” 信息。,一个标准模块,一个类模块,过程是模块的组成单元,由VBA代码编写而成。 过程分两种类型: 1Sub过程 2Function过程,8.2.2 模块的组成,1. 过程 Sub过程以关键字Sub开始,以End Sub结束,不返回任何值。过程的语法结构如下: Sub 过程名称() 声明变量 基本语句 End Sub,2. 函数 函数不仅能执行一定的命令,还能根据参数计算出对程

5、序有用的数值,并且可以在表达式中被引用。函数的语法结构如下: Function 函数名称( )As 数据类型 声明变量 基本语句 End Function,8.3 VBA程序设计基础,8.3.1 数据类型 8.3.2 常量与变量 8.3.3 运算符与表达式 8.3.4 函数,8.3.1 数据类型,(1)字符串型(String) 字符串是一个字符的序列,如字母、数字、标点、汉字等都可以定义为字符串类型。 字符串数据类型分为定长字符串和变长字符串。定长字符串包含164K个字符,而变长字符串最多可以包含20亿个字符。 例:“123”、“AS123”、“东华理工大学”。,(2)数值型 在VBA中,数值

6、类型又分为整型、长整型、单精度浮点型和双精度浮点型。 整型数据占2字节空间,其范围为3276832767。 长整型数据的存储为4字节32位,其范围为21474836482147483647。 单精度浮点型数据存储空间也为4字节32位。 双精度浮点型数据存储空间为8字节64位。,(3)布尔型(Boolean) 布尔(Boolean)数据类型是一个逻辑值,用2字节存储,它的取值只有 True或False。 当转换其他的数值类型为Boolean值时,0会成为False,非0值则变成True。 当转换Boolean值为其他的数据类型时,False成为0,而True成为-1。,(4)日期型(Date)

7、用来表示日期和时间,占用8个字节,是浮点型数值形式。定义日期类型时必须用“#”符括起来。 例:#11/13/88# 、#May 1# 其他的数值类型要转换为Date型时,小数点左边的值表示日期信息,而小数点右边值则表示时间。午夜为0而中午0.5。负整数表示1899年12月30日之前的日期。,(5)货币型(Currency) 该类型以8字节(64位)进行存储,并且小数点位数是固定的。 (6)变体型(Variant) 未被显式声明(用如Dim、Private、Public或Static等语句)为其他类型变量的数据类型。 这种类型的数据可以灵活地转换为任何数据类型,当它被赋予不同值时,将自动进行类型

8、的转换。 Variant数据类型是一种特殊的数据类型,除了定长字符串类型和用户定义类型之外,它可以包含任何类型的数据。,(7)用户自定义型 该数据类型可以包含一个或多个数据类型。格式: Type数据类型名 数据类型元素名 as 系统数据类型名 End Type 例:定义一个数据类型用于表示学生信息,包括姓名、出生日期及性别等。再将某一个学生的信息输入到这个自定义数据类型的变量中。,VBA使用常量、变量来存储值。用来保存在程序运行期间数据。 (一)常量 在程序运行过程中,其值不会被改变的量称为常量。在VBA中有三类常量: 直接常量,如:344、3.14159、-23等; 固有常量,如: acFo

9、rm、adAddNew、vbCuruency等; 系统定义常量,如True、False、Null等。,8.3.2 常量与变量,符号常量 在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量。 VBA中使用关键字Const 声明符号常量。 格式: Const 常量名 As 类型=常数表达式 如: Const PI=3.1415926 Const constr=“abcdef”,例:根据输入半径的值,求出圆的面积。 Const p = 3.14159 Sub area() Dim r As Integer Dim s As Single p = 3.14 r = InputBox(请输入半

10、径) s = p * r * r Debug.Print s End Sub,思考: 1、此程序是否正确? 2、变量与常量的区别?,(二)变量 程序运行过程中,值可以改变的量。 1、变量命名规则 变量名必须以字母或汉字开头,由字母、汉字、数字或下划线组成(不能含有小数点和空格),长度不超过255个字符的字符串; 不能使用VBA中的关键字; VBA中不区分变量名的大小写。,2、变量声明,使用变量之前,一般必须先声明变量。 (1)用Dim语句显式声明变量 Dim 变量名 As 类型 As部分缺省,创建的变量为变体类型 Dim i As integer , sum As single,本章目录,说明

11、: 为了方便定义,可在变量名后加类型符来代替“AS 类型”。此时变量名与类型符之间不能有空格。 例: Dim i As integer , sum As single 等价于: Dim i%, sum! 例: Dim dp4 As string 等价于: Dim dp4$,用类型标志符声明变量:,一个Dim语句可以同时定义多个变量,但每个变量必须有自己的类型声明,类型声明不能共用,否则为变体型 。 例如:Dim m,n As Integer, x,y As Single 则创建了变体型变量m、x,整型变量n和单精度型变量y 。 练习:Dim p1 as string , p5 as strin

12、g 与语句:Dim p1,p5 as string的区别?,对字符串变量,根据其存放的字符串长度是否固定,其定义方法有两种: Dim 字符串变量名 AS String Dim 字符串变量名 AS Strint*字符数 例: Dim s1 As String 声明变长字符串 Dim s2 As String*50 声明定长字符串变量,可存放50个字符,(2)隐式声明 VBA中允许对使用的变量未进行声明而直接使用(不定义而直接使用的变量),称为隐式声明,其类型为 Variant 类型。 注意: 在通用声明处加 Option Explicit 语句可强制显式声明变量。,练习:,1、以下对变量的声明中

13、,不正确的是( ) A)Dim xinxizhongxin as integer B)Dim b as integer C)Dim x_x as integer D)Dim yy as integer 2、下列符号中,( )不是VBA的合法变量名。 A)Inte B)a123 C)123a D)x_12,8.3.3 运算符与表达式,1算术运算符与算术表达式 2字符串连接符与字符串表达式 3关系运算符与关系表达式 4逻辑运算符及其表达式 5对象运算符与对象运算表达式,8.3.3运算符与表达式,VBA中基本的运算符有:算术运算符、关系运算符、逻辑运算符、字符串运算符。 表达式是由运算符、函数和数据

14、等内容组合而成。 1算术运算符与算术表达式 算术运算符,用来执行简单的数学运算。 算术运算符 + 加、- 减 、* 乘 、/ 除 整除、MOD求余 、乘方 练习:4+56*7/8 MOD 9,示例与优先级,MOD (求余运算符) 如果操作数是小数,系统会四舍五入变成整数后再运算; 如果被除数是负数,余数也是负数,反之,如果被除数是正数,余数也是正数。(余数的符号同被除数) 例:10 MOD 2=0 12 MOD 5=2 -12.7 MOD 5=-3 练习:19.1 MOD -5,2、关系运算符与关系表达式,将两个操作数进行大小比较,结果为逻辑值。 注意:字符串比较,则按字符的ASCII码值从左

15、到右一一比较,直到出现不同的字符为止。,3、字符串连接符与字符串表达式,+:连接字符串 &:可以将不同类型变量连接成字符串 注意: + 两旁的操作数应均为字符型; 1)数值型:则进行算术加运算。 2)一个为数字字符,另一个为数值,自动将数字字符转换为数值后进行算术加。 3)一个为非数字字符,另一个为数值型,出错。,例如:123 + 456 结果 123456 123 & 456 结果 123456 使用 与+的区别: abcdef & 12345 结果为 abcdef12345 abcdef +12345 结果为 出错 123 & 456 结果为 123456 123 + 456 结果为 57

16、9,4、逻辑运算符及其表达式,将操作数进行逻辑运算,结果是逻辑值,表达式 1、书写规则 (1) 运算符不能相邻。例a+ -b是错误的。 (2) 乘号不能省略。例x 乘以y 应写成:x*y。 (3) 括号必须成对出现,均使用圆括号。 (4) 表达式从左到右在同一基准上书写,无高低 2、运算优先级 算术运算符连接运算符关系运算符逻辑运算 例:错误的VBA表达式:3=x=7 正确的VBA表达式:3=x And x =7,练习:表达式书写。,其VBA表达式为:(-b+Sqr(b2-4*a*c)/(2*a),2、1+2=3 and (a&b)c的值是?,1. 数学函数 2. 字符串函数 3. 日期/时间

17、函数 4. 类型转换函数,8.3.4 常用函数,1. 数学函数 Int() 功能:对数值表达式取整,取小于或等于X的最大值。 例:INT(12.8)=12 INT(-12.8)=-13 Fix() Round(,m) 功能:四舍五入函数。,注意:区分取整函数Int、Fix、Round之间的异同,练习:,1、Int(-3.25)的结果是 ( ) 2、表达式Fix(-3.25)和Fix(3.75)的结果分别是( ) A)-3,3 B)-4,3 C)-3,4 D)-4,4,Sqr() :平方根函数,数值表达式0 Rnd() :返回介于01之间的随机数。 (即包括0,但不包括1) 例: 产生0 ,10

18、0)之间的双精度数:Rnd*100 产生0,99的随机整数:Int(100 * Rnd ); 产生0,100的随机整数:Int(101 * Rnd ); 产生1,100的随机整数:Int (100 * Rnd + 1 ) 如果要产生30-50之间的随机数?,2. 字符串函数 Len(或) Left(,) Right(,) Mid(,),instr(起始位置,字串1,字串2,比较方式),功能:返回字串2在字串1中最早出现的位置,返回值是一个整数。 比较方式其值可以为0、1和2。 0:缺省值,做二进制比较。 1:不区分大小写的文本比较。 2:做基于数据库中包含信息的比较。 例:已知Strl=“12

19、3456”,Str2=“56”。 s=InStr(strl,str2) 返回5 s=InStr(3, “aBCdAb”, “a”,1) 返回5,Space() Ucase() Lcase() LTrim() RTrim() Trim(),3. 日期时间函数 Date() Time() Now() Year() Month() Day() Weekday(),4. 类型转换函数 Asc() : 功能:返回字符串表达式首字符的ASCII码值。 例:Asc(abcdefg)返回值为97 Chr() 功能 :返回以表达式的值为ASCII码值的字符 例:Chr(65)返回A Chr(13)回车符 Chr

20、(10)换行符 Chr(13)&Chr(10)回车符换行符组合,Str() 功能:将数值表达式值转换成字符串。 注意:会在字符串的前面保留一个空格来表示正负。 例:Str ( 99 ) 返回 99 Val() 功能:将数字字符串转换成数值型数字 例:Val ( “ 3 45 ” )返回345; Val ( 76ah9 )返回76,练习: S1=Chr(Asc(“abcd)-32) S2=ab S2=S2 & Chr(Asc(Mid(S2, 2, 1)+2) K=Len(Str(109),5、输入/输出语句,1)输入语句InputBox InputBox 提示信息,标题,默认值,横坐标,纵坐标

21、功能:提示用户输入一个字符串或数值。 例: strName=InputBox(请输入你的名字:, , 李四),例2、单击窗体,用Inputbox函数,从键盘上输入圆半径,求出圆的面积,并在窗体上输出。面积公式分别为:r2。,MsgBox 消息,按钮模式,标题 功是:在对话框中显示消息,等待用户单击按钮,返回一个整数,该值代表用户单击了哪个按钮。 例: MsgBox 欢迎使用 & Chr(13) & VBA进行程序设计, vbOKOnly, 欢迎,2)输出语句MsgBox,MsgBox按钮设置,本章目录,MsgBox所选按钮返回值,本章目录,练习:,8.4 VBA基本控制结构,8.4.1 语句概

22、述 8.4.2 VBA程序基本结构,8.4.1语句概述,1程序语句书写 2声明语句 3赋值语句,1、程序语句书写 (1)书写规则 通常将一个语句写在一行。语句较长,一行写不下时,可以使用续行符(_)将语句连续写在下一行。 可以使用冒号(:)将几个语句分隔写在一行中。 VBA代码不区分字母的大小写。,例如:mycount = 10 * x + 7 * y + z / 5,mycount = 10 * x + 7 * y _ + z / 5,Text1.Value = Hello : Text1.BackColor = 255,(2) 注释语句 在VBA程序中,注释可以通过以下两种方式实现: 使用

23、Rem语句 使用格式为:Rem 注释语句 使用单引号“”使用格式为: 注释语句 例:定义变量并赋值。 Rem 定义两个变量 Dim Str1,Str2 Str1=Beijing: Rem 注释,在语句之后要用冒号隔开 Str2=ChengDu 这也是一条注释。这时无需使用冒号,2. 声明语句 声明语句用于命名和定义常量、变量、数组和过程。 例:分析程序段: Sub Sample() Const PI=3.14159 Dim i As Integer End Sub,3. 赋值语句 赋值语句是为变量指定一个值或表达式。使用格式为: Let变量名=值或表达式 例:Dim txtAge As Int

24、eger txtAge=21,8.4.2 VBA程序基本结构 一个语句是能够完成某项操作的一条命令,VBA程序是由大量的语句命令构成。 执行语句又分为3种结构: 顺序结构:按照语句顺序依次执行。如赋值语句、过程调用语句。 条件结构:又称选择结构,根据条件选择执行路径。 循环结构:重复执行某一段程序语句。,三种基本结构,1、顺序 2、选择 3、循环,1、顺序结构,在程序设计中,顺序结构是一类最简单的结构。这种结构的程序是按“从上到下”的顺序依次执行语句的。 例:设计一个窗体,要求当用户点击按钮时,能够调用程序计算两个变量a、b的和值s。已知a、b变量分别为整形数值。,2、分支结构 分支结构最常用

25、到的就是 if 语句, 它就如同日常生活中常使用的如果就 是一样的意思。比方說如果明天没下雨, 就去爬山以图形来表示就是,IF语句 单路分支: 格式一:,If Then End If,格式二: If 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 I End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结

26、果是_。,双路分支 格式一:If Then Else End If,格式二: If Then Else ,例1:,例2:任意输入一个数,判断它是否为奇偶数。,练习: 判断x的值,如果是大于0的值,弹出消息“x是正数”;如果是小于0的值,弹出消息“x是负数。”,【例8.6】试用If Then 语句结构编程实现由x值计算表达式y的值。,程序段1:程序段2: If x0 Then If x0 Then y=sqr(x)y=sqr(x) ElseElseIf x=0 Then If x=0 Theny=0 y=0Else Elsey=abs(x) y=abs(x)End If End If End I

27、f,(1) 在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码: Private Sub Command1_Click() a = 75 If a 60 Then k = 1 ElseIf a 70 Then k = 2 ElseIf a 80 Then k = 3 ElseIf a 90 Then k = 4 End If MsgBox k End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果是 A) 1B) 2C) 3D) 4,Private Sub Command1_Click() a = 75 If a 60 Then k = 1 End If If a

28、 70 Then k = 2 End If If a 80 Then k = 3 End If If a 90 Then k = 4 End If MsgBox k End Sub,2. Select Case语句 Select Case语句可以将相应的表达式与多个值进行比较,验证合适之后再执行,其基本语法结构如下: Select Case 表达式 Case 可选值1 基本语句1 Case 可选值2 基本语句2 Case 可选值n 基本语句n Case Else 基本语句n+1 End Select,Select Case 表达式 Case 表达式1 表达式的值与表达式1的值相等时执行的语句序

29、列 Case 表达式2 To 表达式3 表达式的值介于表达式2的值和表达式3的值之间时执行的语句序列 Case Is 关序运算符 表达式4 表达式的值与表达式4的值之间满足关系运算为真时执行的语句序列 Case Else 上面的情况均不符合时执行的语句序列 End Select,Case表达式可以是下列四种格式之一: 单一数值或一行并列的数值,用来与表达式的值相比较,成员间以逗号隔开,例如:Case 1、Case 1,3,5; 由关键字To分隔开的两个数值或表达式之间的范围,其中前一个值必须比后一个值小,否则没有符合条件的情况,例如:Case 0 To 10、Case “A” To “Z”;

30、关键字Is接关系运算符,如、=、,后面再接变量或精确的值,例如:Case Is10; Case Else,在前面的Case条件都不满足时执行。 注意,前3种条件形式可以混用,多个条件之间用逗号分隔开,比如:Case 3,5,Is10。,【例8.7】下列Case语句中错误的是 A) Case 0 To 10 B) Case Is10 C) Case Is10 And Is10,【例8.8】用Select Case End Select结构来实现例11.6中由x值计算表达式y的值。 Select Case x Case Is 0 y=sqr(x) Case 0 y=0 Case Is 0 y=ab

31、s(x) End Select,6. 循环语句,VBA提供了多种循环控制语句,其中常用的包括DoLoop语句、ForNext语句以及WhileWend语句等。 1. DoLoop语句 DoLoop语句是通过While或者Until语句来判断条件表达式的真假,决定是否继续执行。 其中While语句是在条件表达式为真的条件下继续进行,而Until语句是在条件表达式为真时自动结束循环。,DoLoop语句有以下两种语法结构: (1)第一种可以将判断表达式置于循环体之前,先判断表达式再执行循环体,语法结构如下: Do While|Until 条件表达式 基本语句 Loop (2)第二种可以将表达式置于循

32、环体之后,不论表达式真假与否,循环体都至少要执行一次,语法结构如下: Do 基本语句 Loop While|Until 条件表达式,2. ForNext语句 ForNext语句能够重复执行程序代码区域特定次数,使用格式如下: For 循环变量=初值 To 终值 Step 步长 循环体 条件语句序列 Exit For 结束条件语句序列 Next 循环变量,执行步骤如下: 循环变量取初值; 循环变量与终值比较,确定循环是否进行: 步长0时:若循环变量值终值,循环结束,退出循环。 步长=0时:若循环变量值终值,一次也不执行循环。 步长=终值,循环继续,执行步骤;若循环变量值终值,循环结束,退出循环。

33、 执行循环体; 循环变量值增加步长(循环变量=循环变量+步长),程序跳转至步骤。 提示:若ForNext语句中没有给出步长,那默认步长为1。,【例8.9】 计算1+2+3+4+100的和。 方法1: s=0 For i=1 To 100 s=s+i Next i 方法2: s=0 For i=100 To 1 Step -1 s=s+i Next i,3. WhileWend语句 在循环控制语句中,还有一类语句是WhileWend语句,只要条件表达式为真就会重复执行循环体。 该语句的语法结构如下: While 条件表达式 基本语句 Wend,【例8.10】(1) 在窗体中使用一个文本框(名为x

34、)接受输入值,有一个命令按钮test,事件代码如下: Private Sub test_Click() y=0 For i=0 To Me!x y=y+2*i+1 Next i MsgBox y End Sub 打开窗体后,若通过文本框输入值为3,单击命令按钮,输出的结果是 【1】 。,【例8.11】设有如下窗体单击事件过程: Private Sub Form_Click() a = 0 For i = 1 To 6 Select Case i Case 1, 3, 5 a = a + 1 Case 2, 4, 6 a = a + 2 End Select Next i MsgBox a En

35、d Sub 打开窗体运行后,单击窗体,则消息框的输出结果是 A) 6 B) 7C) 8D) 9,【例8.12】设有如下过程: x = 1 Do x = x+2 Loop Until_ 运行程序,要求循环体执行3次后结束循环,空白处应填入的语句是 A) x=7D) x7,六、过程调用,Public|PrivateStaticSub 子过程名() Exit Sub End Sub 子过程的调用形式有两种: Call 子过程名() 或 子过程名 ,Public|PrivateStaticFunction函数过程名()As数据类型 函数过程名= Exit Function 函数过程名= End Fun

36、ction 函数过程的调用形式只有一种:函数过程名()。,七、参数传递,过程定义时可以设置一个或多个形参(形式参数的简称),多个形参之间用逗号分隔。形参的完整定义格式为: OptionalByVal| ByRefParamArray varname( )As type= defaultvalue 其中,varname为形参名称,必需的;type为数据类型,可选;Optional表示参数不是必需的,可选;ParamArray指明最后这个参数是一个Variant元素的Optional数组项,可选;Defaultvalue为缺省值,任何常数或常数表达式,可选;ByVal表示参数按值传递,可选;ByR

37、ef表示参数按地址传递,缺省选项,可选。 含参数的过程被调用时,主调过程中的调用式必须提供相应的实参,并通过实参向形参传递的方式完成过程操作。,关于实参向形参的数据传递,必须掌握以下要点: 实参可以是常量、变量或表达式。 实参数目和类型应该与形参数目和类型相匹配。除非形参定义含Optional和ParamArray选项,参数、类型可能不一致。 传值调用(By Val选项)的“单向”作用形式与传址调用(ByRef选项)的“双向”作用形式。对此,下面做进一步的说明。,【例8.13】在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码: Private Sub Command1_C

38、lick() Dim x As Integer, y As Integer x=12:y=32 Call p(x,y) MsgBox x*y End Sub Public Sub p(n As Integer, ByVal m As Integer) n=n Mod 10 m=m Mod 10 End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果为 【1】 。,【例8.14】在窗体中添加一个名称为Command1 的命令按钮,然后编写如下程序: Public x As integer Private Sub Command1_Click() x10 Call s1 Call s2

39、MsgBox x End Sub Private Sub s1() xx+20 End Sub Private Sub s2() Dim x As integer xx+20 End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果为 A) 10 B) 30 C) 40 D) 50,【例8.15】在窗体中添加一个命令按钮(名称为Command1),然后编写如下代码: Private Sub Command1_Click() Static b As integer bb+1 End Sub 窗体打开运行后,三次单击命令按钮后,变量b 的值是 【7】 。,4. GoTo语句 通过该语句可以

40、无条件地将程序流程转移到VBA代码中的指定行。首先在相应的语句前加入行号,然后在程序需要转移的地方加入GoTo语句,这类语句一般跟随在条件表达式之后,以防出现死循环。 GoTo语句应尽量少用,这些语句会降低程序代码的可读性,并且难以维护和调试。一般GoTo语句都可以通过其他的条件语句和循环语句来代替。,5. WithEnd With语句 With语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在With控制结构中加上属性的赋值语句,这时只是引用一次对象,而不是在每个属性赋值时都要引用它。 其语法格式如下: With 对象 语句 End With

41、,8.3.3 Exit语句,使用Exit语句可以方便地退出循环、函数或过程,直接跳过相应的语句或结束命令。通过Exit关键字可以终止一部分程序的执行,更灵活地控制程序的流程。 在程序的执行过程中,如果程序的执行已经达到预期目的,后面的语句不需要继续执行下去,可以通过Exit语句强行结束相应代码的执行。,8.4 VBA的编程环境,1. VBE界面 (1)工程资源管理器窗口。 工程资源管理器窗口的列表框中列出了在应用程序中用到的模块文件。 (2)属性窗口。 属性窗口列出了所选对象的各种属性,可以“按字母序”和“按分类序”查看属性。 (3)代码窗口。 在代码窗口中可以输入和编辑VBA代码。 2. 在

42、代码窗口中编程,正确地编写VBA应用程序的代码,首先要注意的就是程序的书写格式。 (1)注释语句。 在VBA程序中,注释可以通过使用Rem语句或用单引号实现。 (2)连写和换行。 通常情况下,程序语句一句一行,但对于十分短小的语句,可以在一行中写几句代码,这时只需用“:”分开即可。对于太长的代码可以用空格加下划线“ _”将其截断为多行。,8.5 面向对象程序设计,VBA与传统的编程语言的重要区别就是它是面向对象的,对象是Visual Basic程序设计语言的核心。 对象具有属性、方法和事件。属性是一个对象的特征,它定义了对象的大小、颜色、位置等特征,可以通过修改对象的属性值来修改对象的特征。

43、方法是对象能执行的动作,通过这个动作能实现相应的功能或改变对象的属性。 事件是一个对象可以识别的动作,如鼠标的单击或双击,控件的移动等,事件过程对被触发的事件作出响应,执行相应的功能。,在Microsoft Access中,常用的对象有23个,各对象的名称及说明如表8-5所示。,各类对象及属性的访问方式: (1)引用已打开的窗体或报表 首先输入报表或窗体集合的名称,分别为Reports和Forms,再通过“!”连接相应报表或窗体的名称。 (2)引用相应的子窗体和子报表 首先输入报表或窗体集合的名称,分别为Reports和Forms,通过“!”连接相应报表或窗体的名称,再通过“!”连接相应子报表

44、或子窗体的名称,再通过“.”符号加Report或Form属性来访问。,(3)引用控件或属性值 供应商窗体上的“供应商ID”文本框控件的数据的引用方式为“Forms!供应商!供应商ID”; 控件的有效性属性的引用方式为“Forms!供应商!供应商ID.enabled”; 控件的默认值属性的引用方式为“Forms!供应商!供应商ID.DefaultValue”。,(4)引用窗体节、报表节或报表的组级别 输入窗体和报表的标识符,加上“.”以及相应的节或组级别名称。 还可以使用Section属性,通过编号来引用节或组级别的名称。 Section属性用于区分窗体中的节和组级别,该属性值属于Integer类型,对应一个常量。,8.6 面向对象程序设计实例,1. 设计具有登录功能的窗体 (1)设计一个数据表,其中包含以下两个字段: username(文本型,长度为10,用来存放用户名) password(文本型,长度为10,用来存放密码) (2)设计一个名为“登录界面”的窗体 。 (3)保存代码后,退出VBA环境,切换到窗体的窗体视图。,2. 四则混合运算 (1

温馨提示

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

最新文档

评论

0/150

提交评论