第9章模块与VBA.docx
- 文档编号:9480635
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:47
- 大小:1.66MB
第9章模块与VBA.docx
《第9章模块与VBA.docx》由会员分享,可在线阅读,更多相关《第9章模块与VBA.docx(47页珍藏版)》请在冰点文库上搜索。
第9章模块与VBA
第9章 模块设计
9.1VBA编程环境
1:
VBA介绍:
Basic-QBasic-VisualBasic,宏也是用VB写的程序
2:
工作窗口:
2.1如何打开VBA(和代码相联系的对象),模块,宏,窗体
2.2程序设计的思想,分而治之,模块,这个思想还可以进一步运用到模块中。
2.3程序设计的逻辑关系,程序的基本单位是语句,一行就是一个语句,若干语句放在一块作为一个独立的单位称过程,若干过程放到一个模块中,Access模块包括窗体,标准模块和类模块,这些模块都放到工程窗口中,所谓工程就是程序。
编写过程的地方是代码窗口,调试程序的地方是立即窗口。
过程分为sub过程,函数和事件过程,大同小异。
事件过程依附于窗体及其上的控件,其名字不能改变。
窗体及其上的控件都有属性,可以在属性窗口中进行观察。
窗体模块:
和窗体相关的数据和代码。
标准模块:
公共代码和数据
类模块:
以类的形式存放的代码和数据。
3:
过程的创建和事件过程的创建
9.2VBA语言基础
1:
计算机处理外部世界的方法:
将外部世界抽象为数据(代表),编写代码对数据进行处理,对数据进行还原。
2:
数据的分类,变量和常量,中学,变量为什么会变,变量的实质和抽象P196,为变量赋值。
3:
数据和数据类型
数据是对客观事实的抽象,不指明类型,无意义。
附ASCII码表
变量的类型在定义的时候说明,常量通过格式来说明。
数字
文本(字符)
日期
逻辑
常量示例
-32,1.8E3
“sum”,”河南大学”
#2008-08-01#
Truefalse
类型可以转换
4:
数据运算,表达式说明对数据如何运算,操作符是对数据实行什么运算,函数是自定义的运算符(如何自定义运算符)。
5:
程序控制,语句(自定义语句,sub过程),包括选择控制,循环控制
后面课程就是要解决这些问题。
补充:
代码的语法元素:
标识符:
名字(变量,函数,过程),汉字、字母、数字的组合(不是任意)包括:
关键字和自定义的标识符
常量:
运算符:
注释:
6:
常量变量数组的定义和引用
直接常量
符号常量
6.1常量
内部常量
显示定义
隐式定义
6.2变量
内部常量
6.2.1变量作用域用例
变量作用域是根据定义的位置来决定的,是局部变量、全局变量和模块变量
6.2.2Dim和static的区别(一般了解)
Dim和static是进一步区分局部变量是动态的还是静态的
6.2.3数组的定义
数组是自定义数据类型,
6.2.4函数
内部函数和自定义函数
两个内部函数inputbox和msgbox(label或text)
Msgbox函数格式和语句格式
赋值语句
7:
控制结构,由相应的语句完成
stop语句
quit语句
顺序语句
自定义语句
双分支语句
选择语句
多分支语句
Fornext语句
循环语句
Doloop语句
8;过程设计
一个模块由若干个过程组成。
过程分为以下两类:
1.Sub子过程(自定义语句)
2.Function函数过程(自定义运算符)
3事件过程
1.Sub子过程功能是自定义的语句
又称子程序。
一般实现一个简单的功能,无返回值。
既可以作为独立的事件过程也可以供其它过程调用。
其格式如下:
Sub 子过程名(参数表列)
[程序代码]
End Sub
2.Function函数过程功能是自定义的操作符
就是自定义函数。
有返回值。
不能作为独立的事件过程,主要供其它过程调用。
其格式如下:
Function 函数名(参数表列)
[程序代码]
End Function
3.事件过程
4.过程的调用
5:
参数传递
5.1调用的一般过程
5.2传地址调用和传值(复制)调用
9事件过程的设计
对象,对象是对事物的总抽象,通过属性,方法和事件来刻画一个对象。
如杯子和人
如何将对象调出来DoCmd
事件过程和窗体界面元素的关联,事件
事件过程的定义,简单
程序错误的种类和调试。
变量和常量的详细说明(代码窗口)
代码的语法元素:
标识符:
名字(变量,函数,过程),汉字、字母、数字的组合(不是任意)包括:
关键字和自定义的标识符
常量:
运算符:
注释:
注意:
1、“023”与023
2、“sum”与sum
●VB中的常量有三种:
P46
●直接常量:
3.14!
、True、#2006-08-18#、"程序设计"
●用户定义的符号常量:
格式:
[Public|Private]Const符号常量名[As类型名]=表达式,…
举例:
ConstPIAsSingle=3.14159265
或:
ConstPI!
=3.14159265
●系统常量:
vbRed、vbBlue等等
●变量:
在程序运行过程中取值可以改变的量
●变量的命名规则:
P489①②③
●声明变量的方法:
●显式:
格式:
Dim|Static|Public|Private变量名【As类型名】…
举例1(类型名):
Dimx,y,zAsSingle
举例2(类型符):
i%=1000.5678:
j&=20.45:
x!
="12.5E2"
省略As子句,则默认为变体类型。
不赋初值,有默认初值P50
●隐式:
不声明变量,而是直接使用变量,默认为变体类型,建议不要使用隐式声明。
若在通用部分使用OptionExplicit语句,则必须显式声明。
P49例3-8
数据类型详细说明(立即窗口)
1.数值类型:
整型、实型、货币型、字节型
2.字符类型:
定界符"
3.逻辑类型:
又称布尔型,True(-1)、False(0)
4.日期类型:
定界符#
5.变体类型:
可变类型,可以存放任意的类型
6.对象类型:
用来引用对象(不常用)
第一节 模块的基本概念
一、模块的相关概念
二、模块的分类
三、将宏转换为模块
一、模块的概念
模块是一个为了实现事件响应,以完成数据库应用系统的设计,而编写的VBA(可视化基础应用语言)代码集合。
宏和模块都能实现事件响应。
宏简单易学,但功能有限,只能实现一个简单的应用系统;模块虽复杂,但功能强大,它除了能实现宏所能实现的所有功能外,还可以实现宏所不能实现的功能,适于较复杂应用系统的设计。
二、模块的分类
1.类模块:
窗体和报表模块
局部作用。
作用范围为所属窗体或报表内部,生命周期随窗体或报表的打开而开始、关闭而结束。
主要用于实现本窗体或报表的功能以及与其它对象的联系。
2.标准模块:
公共模块
全局作用。
作用范围为整个应用程序,生命周期随应用程序的运行而开始、关闭而结束。
主要用于放置一些供类模块调用的公共变量或过程。
三、将宏转换为模块
1.窗体或报表中的宏
2.全局宏
1.窗体或报表中的宏
(1)在设计视图中打开窗体或报表;
(2)工具菜单宏“将窗体的宏转换为VisualBasic代码”或“将报表的宏转换为VisualBasic代码”;
(3)单击“确定”按钮。
例1:
将窗体LM01中的宏转化为模块,并观察其内容。
2.全局宏
(1)选择要转换的宏;
(2)文件菜单另存为;
(3)指定模块名并选择保存类型为“模块”;
(4)单击“确定”和“转换”按钮。
例2:
将宏LM02转化为模块,并观察其内容。
第二节创建模块
第三节VBA程序基础
一、面向对象程序设计的基本概念
二、进入VBE编程环境
三、VisualBasic编辑环境
四、数据类型和数据库对象
一、面向对象基本概念
对象:
对象就是实体,一个对象就是一个实体,客观存在并且可以相互区别的事物都是对象。
属性:
对象的特性、静态特征。
方法:
对象可以执行的行为。
属性和方法描述了对象的性质和行为。
其引用方式为对象.属性或对象.行为。
集合:
同类对象的实例构成
二、进入VBE编程环境
(一)模块的创建步骤
1.打开VBE(VB代码编辑)窗口;
2.输入并编辑程序;
3.保存。
(二)VBE窗口的打开方法
1.类模块
(1)选择某个窗体或报表单击代码按钮;
(2)在设计视图中为窗体或报表创建事件代码。
例3:
将窗体LM02的功能改用类模块实现。
2.标准模块
选择模块对象新建按钮。
三、VisualBasic编辑环境
VisualBasic编辑器(VBE,VisualBaiscEditor)是编辑VBA代码时使用的界面。
VBE编辑器提供了完整的开发和调试工具。
窗口主要由标准工具栏、工程窗口、属性窗口和代码窗口组成
四、数据类型和数据库对象
数据的基本性质称为数据类型。
表8.1VBA支持的数据类型
数据类型
标识符
声明符
占用字节
字段类型
字节型
Byte
无
1
字节
整型
Integer
%
2
整型
长整型
Long
&
4
长整型
单精度实型
Single
!
4
单精度
双精度实型
Double
#
8
双精度
货币型
Currency
@
8
货币
字符串型
String
$
1/字符
文本
布尔型
Boolean
无
2
是/否
日期型
Date
无
8
日期/时间
变体型
Variant
(通用型)其类型随数据而变化
1.布尔型数据
2.
布尔型数据只有两个值:
True和False。
布尔型数据转化为其他类型数据时,True转化为-1,False转化为0;其他类型数据转化为布尔型数据时,0转化为False,其他值转化为True。
2.日期型数据
“日期/时间”类型数据必须前后用半角“#”括住,如#2008-7-4#。
3.VBA常量
在程序运行过程中其值不会发生变化的数据量。
在VBA中主要有以下4种常量:
1)一般常量
2)符号常量
3)系统常量
4)内部常量
1)一般常量
与Access相同:
数值型:
直接表示
字符型:
双(单)引号定界
日期型:
字符“#”定界
布尔型:
真(True)、假(False)
2)符号常量
使用一个符号(字符串)来替代一个常量。
定义格式:
Const符号常量名=常量值
使用符号常量的好处:
(1)可以提高程序的可读性和清晰性;
(2)使程序易于修改。
3)系统常量
系统启动时就建立的符号常量。
如:
True、False、Yes、No、On、Off、Null。
4)内部常量
系统内部预先定义的符号常量。
内部常量都以前缀ac开头。
4、VBA变量
在程序运行过程中其值可以发生变化的数据量。
其实质是一个存放数据的容器,在不同的时间可以将不同的数据存放在其中,变量的值就是其中存放的数据。
为相互区别,每个变量都有一个名字,通过变量名访问变量的值。
1)变量的定义
格式1:
变量名[类型说明符]=表达式
格式2:
Dim变量名[as类型标识符]
说明:
(1)变量类型是指变量中数据的类型;
(2)若省略类型标识,则变量类型为变体类型;
(3)格式1是使用时临时定义,格式2是先定义后使用,程序清晰度高,建议使用格式2;
(4)可在模块设计窗口顶部的数据声明区加OptionExplicit语句以禁止使用格式1。
2)变量的赋值
格式:
[Let]变量名=值或表达式
5.数组
一组连续变量的集合。
整个数组有一个数组名,每一个成员称为数组元素,其实质是变量。
在VBA中数组主要有以下2类:
(1)一维数组
(2)二维数组
(1)一维数组
定义:
Dim 数组名([下标下限to]下标上限) [as 类型标识符]
说明:
①圆括号确定数组中元素的个数,其中“下标下限to下标上限”用以指定数组元素编号(下标)的最小值和最大值;
②若省略“下标下限”,则默认下限为0;
③数组的类型就是数组各元素的类型,若缺省则为变体类型;
④各元素的引用方式为:
数组名(下标)。
(2)二维数组
二维数组的实质是一个由多个同类型变量组成的矩阵。
定义:
Dim 数组名([下限1to]上限1,[下限2to]上限2)[as类型标识符]
说明:
①“下限1”和“上限1”指定数组行数和行号范围;
②“下限2”和“上限2”指定数组列数和列号范围;
③元素引用方式:
数组名(下标1,下标2)
变量作用范围
在一个命令按钮下输入如上的代码,当单击三次这个按钮后a 和b的值分别是多少。
A=1b=3.
6.对象变量
Access建立的数据库对象及其属性,可被看作变量来使用。
控件对象属性的引用格式:
Forms(或Reports)!
窗体名(或报表名)!
控件名[.属性名]
引用当前窗体中控件可简写为:
Me!
控件名[.属性名]或
控件名[.属性名]
窗体对象的属性引用格式为:
Form.属性名或Me.属性名
对象常用属性
标题:
Caption 控件值:
Value
宽度:
Width 高度:
Height
上边距:
Top 左边距:
Left
是否可用:
Enabled 是否可见:
Visible
前景色:
Forecolor 背景色:
Backcolor
字体:
FontName 字号:
Fontsize
控件来源:
ControlSource
记录源:
RecordSource
图片:
picture
7、VBA常用标准函数
1)数学函数
2)字符串函数
3)日期/时间函数
4)类型转换函数
5)选择函数
1)数学函数
(1)绝对值:
Abs
(2)取整:
IntFix
(3)四舍五入函数:
Round(<数值表达式>[,<表达式>])
(4)平方根:
Sqr
(5)符号函数:
Sgn
(6)随机数:
Rnd
生成一个0~1之间的随机数(不包括0和1)。
2)字符串函数
(1)子串检测:
InStr
InStr([Start,]
注意:
如果Str1的串长度为零,或Str2表示的串检索不到,则InStr返回0;如果Str2的串长度为零,Instr返回Start的值。
(2)求长度:
Len
(3)字符串截取:
左:
Left、右:
Right、任意:
Mid
(4)空格生成:
Space
(5)大小写转换:
小转大:
Ucase、大转小:
Lcase
(6)空格删除:
首:
Ltrim、尾:
Rtrim、首尾:
Trim
3)日期/时间函数
(1)求系统日期和时间
日期:
Date、时间:
Time
日期和时间:
Now
(2)截取日期分量
年:
Year、月:
Month、日:
Day
星期:
Weekday
(3)截取时间分量
时:
Hour、分:
Minute、秒:
Second
(4)返回包含指定年月日的日期函数
DateSerial(exp1,exp2,exp3)
4).类型转换函数
(1)字符串转字符代码(ASCII码):
Asc
(2)字符代码转字符:
Chr
(3)数值转字符串:
Str
注意:
当一数字转成字符串时,总会在前面保留一空格来表示正负。
(4)字符串转数值:
Val
(5)空值转换函数
(6)数据类型转换函数
函数
功能
CByte
转字节型(Byte)
CInt
转整型(Integer)
CLng
转长整型(Long)
CSng
转单精度实型(Single)
CDbl
转双精度实型(Double)
CCur
转货币型(Currency)
CStr
转字符串型(String)
CBool
转布尔型(Boolean)
CDate
转日期型(Date)
CVar
转变体型(Variant)
5)可以实现选择操作的函数
①iif函数
②switch函数
③choose函数
①iif函数
格式:
iif(条件表达式,表达式1,表达式2)
功能:
“条件表达式”为真值,函数返回“表达式1”的值;否则,函数返回“表达式2”的值。
②Switch函数
格式:
switch(条件表达式1,表达式1[,条件表达式2,表达式2]……[条件表达式n,表达式n])
功能:
从左至右分别计算并判断各“条件表达式”的值,如果为真,则函数返回对应表达式的值。
③choose函数
格式:
choose(索引式,选项1[,选项2,……, 选项n])
功能:
根据索引式的值来返回选项列表中的某个值。
索引式值为1,返回选项1;索引式值为2,返回选项2,依次类推。
8.VBA的运算符
1)算术运算符
^、*、/、\、mod、+、-
2)关系运算符
>、>=、<、<=、=、<>
3)逻辑运算符
and、or、not
4)连接运算符
+、&
第四节VBA流程控制语句
1.语句的概念
2.语句的书写规则
3.注释语句
4.声明语句
5.赋值语句
6.流程控制语句
1.语句的概念
能够完成某项操作的一条命令。
一个程序由若干个语句组成。
2.语句的书写规则
(1)一般一行写一个语句;
(2)若语句太长,一行写不下,可以用续行符“_”将语句连续写在下一行;(空白加下划线)
(3)可以用冒号将多个语句分隔写在一行。
3.注释语句
(1)功能
对程序及程序中的语句的功能进行解释,为程序的阅读提供参考。
注释语句在程序运行时不执行。
(2)格式
格式一:
rem 注释字符串
格式二:
’注释字符串
4.声明语句
用于定义符号常量、变量、数组或过程的语句
5.赋值语句
(1)功能
用于给变量赋值。
(2)格式
[Let] 变量名=值或表达式
6.流程控制语句
控制程序执行流程的语句。
程序结构主要分为顺序、选择(分支)和循环三种结构。
顺序结构就是按照语句的书写顺序依次执行;选择结构是根据某个条件的成立与否分别选择执行不同的语句序列;循环结构就是重复执行一组语句。
流程控制语句就是为了实现选择结构和循环结构而提供的语句。
(1)选择结构程序语句
(2)循环结构程序语句
(1)选择(分支)结构程序设计
1)if语句
2)SelectCase语句
1)if语句
①格式一
②格式二
③格式三
①格式一
If <条件> Then
<语句序列>
EndIf
功能:
实现单分支程序结构。
注意:
当语句序列只有一个语句时,可写为:
If<条件> Then<语句>
执行流程:
②格式二
If <条件> Then
<语句序列1>
Else
<语句序列2>
End If
功能:
实现双分支程序结构。
注意:
当语句序列只有一个语句时,可写为:
If<条件>Then<语句1>Else<语句2>
执行流程:
③格式三If语句的嵌套
Ⅰ、If <条件1> Then
<语句序列1>
Else
If <条件2> then
<语句序列2>
Else
<语句序列3>
EndIf
EndIf
功能:
实现多分支程序结构。
Ⅱ、If <条件1> Then
<语句序列1>
ElseIf <条件2> Then
<语句序列2>
Else
<语句序列3>
EndIf
Ⅲ、多层嵌套的格式如下:
If <条件1> Then
<语句序列1>
ElseIf <条件2>Then
<语句序列2>
ElseIf <条件3> Then
<语句序列3>
……
End If
执行流程:
2)SelectCase语句
格式:
Select case <测试表达式>
case <匹配表达式1>
<语句序列1>
case <匹配表达式2>
<语句序列2>
……
case <匹配表达式n>
<语句序列n>
case else
<语句序列n+1>
EndSelect
功能:
实现多分支程序结构。
说明:
①“测试表达式”可以是数值表达式或字符表达式,通常为变量;
②“匹配表达式”必须与“测试表达式”的类型相同;
③“匹配表达式”称为域值,可以是下列形式之一:
Ⅰ.<表达式1>[,<表达式2>]……
列表匹配。
各“表达式”值为“或”关系,即当“测试表达式”的值与它们中任意一个相同时,条件为真。
Ⅱ.<表达式1> to <表达式2>
范围匹配。
若“测试表达式”的值在“表达式1”至“表达式2”之间,条件为真。
Ⅲ.is <关系表达式>
条件匹配。
当“测试表达式”满足“关系表达式”指定的条件时,条件为真。
注意:
以上三种形式可组合使用
从流程图我们可以看到Case语句是依次测试,并且执行第一个符合Case条件的相关的程序代码,即使再有其他符合条件的分支也不会执行,如果没有找到符合的,且有CaseElse语句,就会执行接在该语句后的程序代码,然后程序跳转到EndSelect终止语句的下一行程序代码继续执行下去。
(2)循环结构程序设计
1)步长循环
2)当型循环
3)直到型循环
4)循环嵌套
1)步长循环
格式:
For循环变量=初值To终值[Step步长]
语句组
Next[循环变量]
执行流程:
当步长>0时,循环条件为:
循环变量<=终值;
当步长<0时,循环条件为:
循环变量>=终值。
①步长为1时,关键字Step可以省略。
一般步长为整数,可以是实数。
②循环过程中可以设置条件使用ExitFor强行终止循环。
例:
编写如下程序
Subprog1()
Dims,i
s=0
Fori=1To10
s=s+i
Nexti
Debug.Prints
EndSub
例:
在立即窗口中显示由星号(*)组成的5×5的正方形。
Subprog2()
ConstMAX=5
DimstrAsString
str=""
Forn=1ToMAX
str=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模块 VBA