第9章VBA模块
- 格式:doc
- 大小:1.11 MB
- 文档页数:14
第9章Access的编程—VBA模块9.1 VBA基础9.1.1什么是VBAVBA(Visual Basic for Applications)是广泛流行的可视化应用程序开发语言VB(Visual Basic)的子集。
学过VB语言的读者会发现VBA语言的语法和特色与VB语言基本类似。
需要注意的是,VB语言开发系统是独立运行的开发环境,它创建的应用程序可以独立运行在Windows 平台上;而VBA则不同,其编程环境和VBA程序都必须依赖Office应用程序(如Access、Word、Excel 等)9.1.2 VBA 开发环境如P218图9.19.1.3 VBA程序书写规则VBA程序语句在书写的时候有一定的要求,编写代码前应对其结构有明确的了解。
1.语句书写规定通常一条语句写在一行,当语句较长时,可以使用续行符“_”将语句连续写在下一行;也可以使用冒号“:”将多条较短的语句分隔写在同一行中。
2.注释语句在代码书写过程适当地添加注释,有助于程序的阅读和维护。
注释语句可以添加到程序的任意位置,并且默认以绿色文本显示。
其实现方式有以下两种:格式:Rem 注释语句(在其它语句之后要用冒号分隔)格式:’注释语句9.1.4 VBA的数据类型9.1.5 常量、变量、运算符和表达式一、常量1、概念在程序运行过程中,其值不可以发生变化的量叫做常量。
2、常量的分类:系统还提供3种常量:直接常量、符号常量、系统常量(1)直接常量直接使用一个值来表示的常量,如5,152,521(2)符号常量用符号常量表示在编程中反复使用的相同值。
符号常量名一般用大写字母,以便与变量名区分。
定义格式:Const 符号常量名=常量值如:Const PI As Single =3.14或:如:Public Const PI=3.14(3)系统常量系统常量是Access启动时就建立的常量,可以在所有程序编码时直接使用。
系统常量有:true、false、yes、no、on、off、null。
二、变量在程序运行的过程中,其值可以发生变化的量叫做变量。
1.声明变量在程序中使用变量前,一般情况下需要定义变量,就是声明变量。
2.声明变量的定义使用Dim语句定义。
格式如下:Dim 变量名AS 变量类型Dim xing As LongDim r As Integer3、变量赋值给变量赋值,就是将指定的数据保存到变量中。
如:Dim name As StringName=”张三”9.1.6 VBA运算符VBA的运算符有4种:算术运算符、关系运算符、逻辑运算符、连接运算符。
1.算术运算符:乘幂(^)、乘法(*)、除法(/)、整数除法(\)、求模(mod)、加法(+)、减法(-)。
2.关系运算符:相等=、不相等<>、大于>、大于等于>=、小于<、小于等于<=。
对两个操作数进行比较,得到一个逻辑值。
3.逻辑运算符与and、或or、非not。
对两个逻辑值进行比较,结果仍然是逻辑值。
4.连接运算符:&、++要求两边都是字符串,&两边可怜可以是字符串,也可以不是字符串。
&强制将两个操作数作为字符串连接。
+只对字符串进行连接。
5、运算符的优先级:括号>算术运算符>连接运算符>关系运算符>逻辑运算符。
优先级相同时,运算顺序从左到右。
9.1.7数组1.数组的概念VBA中的数组是一组具有相同数据类型、同一名字、不同下标的变量集合。
数组变量由变量名和数据下标组成,数组下标用圆括号括起来。
说明:(1)数组要先定义后使用,VBA不允许隐式声明数组。
(2)同一过程中数组名不能与其他变量重名。
2.固定数组的声明格式1:dim 数组名(下标上限) as 数据类型例如:dim a(6) as integer功能:声明了有7个元素的数组a,元素下标从0到6,默认值均为0。
说明:(1)如果不定义数组下标的下限,默认下标下限为0。
(2)数组定义中的参数必须是常数。
(3)如果使用as语句定义数组类型,同一数组只能存放相同类型数据格式2:dim 数组名(下标下限to 下标上限) as 数据类型例如:dim b(1 to 6) as string功能:声明了有6个元素的数组b,下标从1到6,默认值均为空串。
3.声明多维数组格式:dim 数组名(下标上限1,下标上限2,…) as 数据类型例如:dim c(3,4) as integer功能:声明有20个元素的数组c,行下标从0到3,列下标从0到4。
例如:dim d(1 to 3,2 to 4) as integer功能:声明有9个元素的数组d,行下标从1到3,列下标从2到4。
4.使用数组声明数组后,每个数组元素都被当作单个变量使用。
一维数组元素的引用格式:数组名(下标)二维数组元素的引用格式:数组名(下标1,下标2)9.1.7数据的输入输出1、InputBox函数格式:inputbox(提示信息,标题栏字符串,默认值)功能:提示用户输入一个字符串或数值。
说明:(1)“提示信息”是必选项,是一个字符串,显示在输入框中。
(2)“标题栏字符串”是可选项,省略此项,标题栏将显示应用程序名。
(3)默认值是可选项,是字串或数字,省略此项,系统会自动匹配数据类型。
(4)函数返回值是在输入框中输入的数字或字符串。
2、MsgBox函数格式:msgbox(显示信息,按钮数目+图标类型,标题栏字符串)功是:在对话框中显示消息,等待用户单击按钮,返回一个整数,该值代表用户单击了哪个按钮。
(显示内容)(显示:确定、取消)(标题)A)B)C)D)9.2 VBA常用函数1.算术函数(1)abs(x),返回x的绝对值。
(2)int(x),返回x的整数部分,x<0时,返回值小于等于x。
fix(x),返回x的整数部分,x<0时,返回值大于等于x。
(3)sqr(x),返回x的平方根。
要求x大于等于0。
(4)rnd(x),返回0~1之间的随机数,为单精度类型。
说明:若x>0,每次产生不同随机数;若x=0,产生最近生成的随机数;若x<0,每次产生相同随机数。
当x>0时可直接写rnd,省略括号和参数。
例如:int (100*rnd),产生0~99之间的随机整数。
int (101*rnd),产生0~100之间的随机整数。
int (100*rnd+1),产生1~100之间的随机整数。
int (100*rnd+100),产生100~199之间的随机整数。
int (101*rnd+100),产生100~200之间的随机整数。
(5)round(x,n),n是小数位数,对x的小数做四舍五入,返回有n位小数的x值。
例如:round(12.735,2),返回12.74。
2.字符串函数(1)len(x),返回x的长度,即字符个数。
要求x为字符串类型。
(2)space(n),返回由n个空格组成的字符串,n为数字。
(3)ucase(x),将x中的小写字母转大写。
lcase(x),将x中的大写字母转小写。
(4)trim(x),去掉x的首部和尾部空格。
ltrim(x),去掉x的首部空格。
rtrim(x),去掉x的尾部空格。
(5)instr(起始位置,字串1,字串2,比较方式),返回字串2在字串1中最早出现的位置,返回值是一个整数。
3.日期时间函数(1)weekday(x,n),返回1~7的整数,表示星期几。
说明:n为可选项,默认值1。
当n取值为1时,星期天返回1,星期一返回2,…,依次类推。
若n 取值为2,则星期一返回1,星期二返回2,…,星期天返回7。
(2)hour(x),返回x的小时数。
(3)minute(x),返回x的分钟数。
(4)second(x),返回x的秒数。
4.类型转换函数(1)asc(x),返回首字符的ASCII码,其中,x是字符串或字符串变量名。
说明:ASCII码是美国标准信息转换码,共128个字符,对应十进制数0~127。
(2)chr(n),将数字n转换成相应字符,n的取值范围0~127。
(3)str(n),将数字转换为字符串,n是数字或数字表达式。
说明:当数字转换为字符串时,总会在前头留一个符号位,如果是正数,符号位显示空格。
(4)val(x),将数字型字符串转换为数字,x是数字型字符串。
说明:转换时自动将空格、制表符、换行符去掉,当遇到第一个不能识别为数字的字符时即停止读入。
9.3 VBA程序流程控制语句控制语句的3种结构:●顺序结构:按照语句书写的顺序依次执行。
如赋值语句、过程调用语句等。
●选择结构:也称为条件结构,根据条件来选择执行路径。
●循环结构:重复执行某一段程序语句。
一、顺序结构按照语句书写的顺序依次执行。
如赋值语句、过程调用语句等。
二、选择结构1.If语句这是VBA中最常用的一个语句,它和人们的思维习惯是一致的。
其语句格式有如下两种:If <条件> Then <语句1> End IfIf语句的含义是:如果(If)条件成立,那么(Then)执行语句1;如果条件不成立,则该If语句不被执行。
If <条件> Then <语句1> Else <语句2> End IfIf语句的含义是:如果(If)条件成立,那么(Then)执行语句1,否则(Else),即条件不成立执行语句2。
例1:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。
Private Sub Command1_Click()a = 75If a > 60 Thenk = 1ElseIf a > 70 Thenk = 2ElseIf a > 80 Thenk = 3ElseIf a > 90 Thenk = 4End IfMsgBox "k的值为:" & kEnd Sub本例是块If语句的应用,执行的过程是:按条件出现的顺序依次判断每一个条件,发现第一个成立的条件后,则立即执行与该条件相对应的语句组,然后跳出该条件语句,去执行End If后的第一条语句。
因为a=75,满足a>60的条件,所以k=1,End If后的第一条语句为MsgBox k,所以消息框中显示的结果为1。
例2:窗体中有一名为Command1的命令按钮,其单击事件过程如下所示,试分析单击该命令按钮后消息框中的显示内容。
Private Sub Command1_Click()A=75If A>60 Then I=1If A>70 Then I=2If A>80 Then I=3If A>90 Then I=4MsgBox IEnd Sub本例是四个行If语句的顺序结构。