《1.VBA编程基础常量、变量、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《1.VBA编程基础常量、变量、运算符和表达式.ppt(37页珍藏版)》请在三一办公上搜索。
1、全国计算机等级考试Access数据库程序设计(二级),万红波烟台大学,VBA编程基础,常量、变量、运算符和表达式;流程控制语句;过程调用和参数传递;常用操作的实现方法;VBA的数据库编程;,1.1 数据类型,程序的主要目的是处理各种数据,现实存在的数据是各种各样的,比如有整数、文本数据等等;在表的创建过程中,涉及到字段的数据类型,字段的数据类型决定了字段可以存储什么样的数据;字段的数据类型是Access内部的数据类型;VBA中也定义了各种数据类型,用来在程序中存放不同的数据;,1.1 数据类型,1.1 数据类型-变体数据类型,变体类型除了定长字符串类型、用户自定义类型外,可以包含其他任何类型的
2、数据;如果没有显式声明,变量的默认类型是变体类型;,1.2 变量,变量就是存放数据的容器,在程序运行中存放数据,并且数据可以发生变化;变量的名字由字符、数字、下划线(_)构成,变量命名大小写不“敏感”;,1.2 变量显式定义变量,显式变量:先定义变量,后使用Dim 变量名 As 变量类型Dim ii As Integer 定义ii为整型变量Dim s As String*10 定义s为定长字符串Dim t 没有As部分,默认为Variant类型可以加入Option Explicit语句,强制要求所有变量必须先定义后使用;,1.2 变量隐式变量,变量没有直接定义,借助将一个值指定给变量名的方式来
3、建立变量;MyVar=532 默认是Variant类型,值为532可以使用类型说明字符来指明隐含变量的类型MyVar%=23MyDouble#=23.34,1.2 变量作用域局部范围,变量定义在模块的过程的内部,Private Sub OK_Click()Dim i As Integer i=9 MsgBox i=&iEnd Sub,1.2 变量作用域模块范围,变量定义在模块的所有过程之外的起始位置,模块的所有子过程和函数都可以使用;,Dim i As IntegerPrivate Sub OK_Click()i=9 MsgBox i=&iEnd Sub,1.2 变量作用域全局范围,变量定义在
4、标准模块的所有过程之外的起始位置,用Public.As 定义的变量属于全局范围;Public i As Integer全局范围的变量,在类模块和标准模块中都可以访问;在类模块中访问标准模块中的全局变量标准模块名.全局变量名,1.3 数据类型之间的转换,把数据转换成特定的类型,Dim bb As Booleanbb=CBool(true),1.4 用户自定义数据类型,可以建立包含一个或多个VBA标准数据类型的用户自定义数据类型用户自定义类型的声明,必须放在标准模块中,Type 数据类型名 As As.End Type,1.4 用户自定义数据类型例子,在标准模块asd中,声明用户自定义类型Publ
5、ic Type Student txtNo As String*7 txtName As String txtSex As String*1 txtAge As IntegerEnd Type,在类模块中,定义用户自定义类型变量Private Sub OK_Click()Dim stu As asd.Student stu.txtNo=2929333 stu.txtName=张三 stu.txtSex=男 stu.txtAge=20 MsgBox stu.txtName&stu.txtNameEnd Sub,1.4 用户自定义数据类型例子,在类模块中,定义用户自定义类型变量Private Su
6、b OK_Click()Dim stu As asd.Student With stu.txtNo=2929333.txtName=张三.txtSex=男.txtAge=20 End With MsgBox stu.txtName&stu.txtNameEnd Sub,1.5 数组,数组:包含一种数据类型的一组数据Dim 数组名(下标下限 to 下标上限)缺省情况下,数组下标下限为0,可以使用“Option Base 1”将数组的默认下标下限由0改为1Dim NewArray(10)As IntegerNewArray(0).NewArray(10),1.5 数组,二维数组的定义Dim aa(
7、5,5)As Integeraa(0,0)a(0,1)a(0,2).a(0,5).a(5,5)动态数组先用Dim显式定义数组但不指明元素数目,然后用ReDim关键字来决定元素数目;Dim MyArray()As Long.ReDim MyArray(10),练习题,以下哪个选项定义了10个整型数构成的数组,数组元素为NewArray(1)至NewArray(10)A)Dim NewArray(10)As IntegerB)Dim NewArray(1 To 10)As IntegerC)Dim NewArray(10)IntegerD)Dim NewArray(1 To 10)Integer,
8、练习题,语句Dim NewArray(10)As Integer的含义是A)定义了一个整型变量且初始值为10B)定义了10个整数构成的数组C)定义了11个整数构成的数组D)将数组的第10元素设置为整型,1.6 引用窗体或报表中控件的属性值,引用窗体或报表中控件(通用方式)Forms!窗体名称!控件名称.属性名称Reports!窗体名称!控件名称.属性名称引用自身窗体上的控件Me.控件名称.控件属性,定义控件类型变量Dim txtName As Control用Set引用控件Set txtName=Forms!testForm!txtNameMsgBox txtName.ValuetxtName
9、.Value=Test,1.7 符号常量,Const 符号常量名称=常量值定义全局符号常量,在标准模块中Global Const PI=3.1415Public Const PI=3.1415,1.8 系统常量、内部常量,Access启动时就建立的系统常量比如:True,False,Yes,No,Off,Null内部常量:VBA提供的一些预定义的内部符号常量;,MsgBox 提示信息,vbInformation,窗口标题“DoCmd.OpenReport 教师,acViewPreview,1.9 运算符,VBA中,使用各种运算符来完成对数据的运算和处理算术运算符关系运算符逻辑运算符连接运算符,
10、1.9 运算符算术运算符,加法+减法-乘法*除法/整数除法 求模运算 Mod乘幂,Dim MyValueMyValue=10 Mod 4MyValue=10 Mod 2MyValue=-10 Mod 2MyValue=-12.7 Mod-5MyValue=3 2MyValue=10.2 4.9MyValue=10 3,整数除法,操作数的小数部分直接舍去,如果结果有小数也要舍去;求模运算Mod,操作数的小数部分四舍五入后变成整数再运算;余数的正负跟被除数相关;,1.9 运算符关系运算符,相等=不等 大于 小于=小于等于=,Dim MyValueMyValue=(10 4)MyValue=(#8/
11、8/2006#=#9/8/2008#),比较运算的结果为逻辑值:True(真)或False(假),1.9 运算符逻辑运算符,逻辑运算符对两个逻辑量进行逻辑运算AND 逻辑与OR 逻辑或NOT 逻辑非,Dim MyValueMyValue=(10 4 And 11 2)MyValue=(10 2)myvlaue=Not(4=3),1.9 运算符连接运算符,字符串连接运算符&强制将两个表达式做字符串连接+当两边的表达式都是字符串的时候,才将两个字符串连接成一个字符串,Dim s As StringDim ss As Strings=2&3ss=2+3,1.10 运算符的优先级,优先级:算术运算符连
12、接运算符关系运算符逻辑运算符算术运算符 和逻辑运算符的优先级,低,高,1.11 常用标准函数,VBA提供了大量的标准函数,可以在程序中调用;数学函数字符串函数日期/时间函数类型转换函数,1.11 常用标准函数数学函数,取整函数 Int()Fix()参数为正数时,两者相同;参数为负数时候,Int返回小于等于参数值的第一个负数,Fix返回大于等于参数值的第一个负数;,Dim a,b As Integera=Int(-3.23)b=Fix(-3.23)MsgBox a=&a&b=&b,1.11 常用标准函数数学函数,随机数函数 Rnd(),产生大于等于0,小于1的单精度数;数值表达式的值0,每次产生
13、随机数;默认值数值表达式的值=0,产生最近生成的随机数;,练习题,有如下语句:s=Int(100*Rnd)执行完毕后,s的值是A)0,99的随机数B)1,99的随机数C)0,100的随机数D)1,100的随机数,1.11 常用标准函数字符串函数,字符串检索函数InStr(Start,Compare)Start和Compare都是可选参数;检索Str2在字符串Str1中最早出现的位置,字符串中第一个字符的位置为1;,Dim str1,str2 As StringDim i As Integerstr1=str2=ytui=InStr(str1,str2)MsgBox i,1.11 常用标准函数字
14、符串函数,字符串长度函数Len()返回字符串中所包含的字符的个数,对于定长字符串来说,返回定义时的长度;,Dim str1 As String*10Dim str2 As Stringstr1=abcdstr2=abcdDim i1,i2 As Integeri1=Len(str1)i2=Len(str2),1.11 常用标准函数日期/时间串函数,Date 返回当前系统日期 Time 返回当前系统时间Now 返回当前系统日期和时间,Dim d As Dated=NowMsgBox d,1.11 常用标准函数类型转换函数,字符和字符的ASCII码之间的转换Asc():将字符串中的第一个字符转换为该字符的ASCII码;Chr():返回ASCII码对应的字符;数字和字符串之间的相互转换Str():转换成字符串;Val():将数字字符串转换成数值型数字;,练习题,从字符串s中地2个字符开始获得4个字符的字符串函数是A)Mid(s,2,4)B)Left(s,2,4)C)Right(s,4)D)Left(s,4),