已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第8章 VBA程序设计,2,本章主要内容,VBA程序设计基础 VBA基本控制结构 过程调用和参数传递 面向对象程序设计,3,8.1 VBA程序设计基础,编程环境 数据类型 常量与变量 运算符和表达式 常用内部函数 域聚合函数,4,8.1.1 VBA编程环境,进入VBA编程环境 VBE工具栏(P235236) VBE窗口,5,代码窗口:用于编写、显示、编辑VBA代码,立即窗口:输入或粘贴一行代码,按下Enter键执行,本地窗口:显示所有当前过程中的变量声明及变量值,监视窗口:显示当前工程中定义的监视表达式的值,工程窗口:显示工程的分支结构列表和所有包含的模块,属性窗口:列出选定对象的属性,6,8.1.2 数据类型,标准数据类型(P238) 用户自定义数据类型 对象数据类型 17种(P239) 用于在程序中操作数据库及库中其他对象 通过操作各对象的属性和方法来实现对对象的操作,7,8.1.3 常量与变量,常量 变量 变量的命名原则 变量声明 变量的应用范围 数组 数组的声明 数组的使用 对象变量,8,8.1.4 运算符和表达式(P242),表达式:用运算符将常量、变量、函数等连接起来的式子,书写在一行上 表达式类型: 算术表达式,如 Count=x+1 关系表达式,如 C20 逻辑表达式,如 Age=60, (-b+Sqr(b2-4*a*c)/(2*a),9,运算符的优先级,算术运算,关系运算,逻辑运算与、或,赋值运算,逻辑非,从高到低,10,8.1.5 VBA常用内部函数,数据的输入/输出函数 测试函数 数学函数 字符串函数 转换函数 时间函数,11,输入/输出函数,InputBox()函数 建立输入窗体,接收用户键盘输入的数据,返回输入框中输入的数字或字符串 简单格式: InputBox(提示信息,标题栏字符串,默认值) 说明: 提示信息:字符表达式,对话框中的信息显示 标题栏字符串:字符表达式,对话框标题显示 默认值:字符表达式,无输入时,该默认值作为输入内容,12,输入/输出函数,Sub test() Dim sname As String, strs1 As String strs1 = “请输入你的姓名,然后单击确定“ sname = InputBox(strs1, “输入框“) End Sub,13,输入/输出函数,MsgBox()函数 向用户发布提示信息,并等待用户响应 格式: MsgBox(提示信息,按钮数目+图标类型+缺省按钮,标题栏字符串) 说明: 提示信息:字符表达式,对话框中的信息显示 按钮数目+图标类型+缺省按钮:指定显示按钮的数目及形式、使用的图标样式、缺省按钮 标题栏字符串:字符表达式,对话框标题显示,14,输入/输出函数,Sub age() Dim n As Integer n=InputBox(“请输入你年龄”, “输入年龄”) MsgBox “你的年龄是” & n & “岁” End Sub,15,输入/输出函数,MsgBox消息框的两种形式 子过程调用形式:不需要返回值,不用括号表示参数表,变成一条输出语句 MsgBox “你的年龄是” & n & “岁” 函数过程调用形式:有返回值(P244),要用括号将参数表括起来 MsgBox(“您真的要退出系统吗?“,4+32+256,“确定“)=6,16,数学函数,Exp(x) Abs(x) Log(x) Sqr(x) Sgn(x) Rnd(x) Round(x ,number) Int(x) Fix(x),17,字符串函数,Trim(string) Space(x) Asc(string) Chr(charcode) Len(string) Left(string,x) Right(string,x) Mid(string,start,x) Val(string) Str(x),18,时间函数,Now Date Time Timer TimeSerial(hour,minute,second) Second(time) Minute(time) Hour(time) Day(date) Month(date) Year(date) Weekday(date,firstdayofweek),19,转换函数,CBool(expression) CByte(expression) CDate(expression) CDbl(expression) CInt(expression) CLng(expression) CSng(expression) CStr(expression) CVar(expression),20,测试函数,IsNumeric(x)函数 IsDate(x)函数 IsEmpty(x)函数 IsArray(x)函数 IsError(expression)函数 Isnull(expression)函数 IsObject(identifier)函数,21,8.1.6 域聚合函数,DCount函数:返回指定记录集中的记录数 DAvg函数:返回指定记录集中某个字段列数据的平均值 DSum函数:返回指定记录集中某个字段列数据的和 DMax函数:指定记录集中的最大值 DMin函数:指定记录集中的最小值 DLookup函数:从指定记录集获取特定字段的值,可直接用于VBA、宏、查询表达式或计算控件 语法表达式 函数名 (表达式, 记录集,表达式),22,8.2 VBA基本控制结构,顺序结构 选择结构 循环结构 常用算法,23,8.3 过程调用和参数传递,Sub过程的定义和调用 函数过程的定义和调用 参数传递 变量、过程和作用域 递归,24,8.4 面向对象程序设计,面向对象程序设计的基本概念 对象模型 DoCmd 对象,25,面向对象程序设计的基本概念,抽象 继承 封装 多态性 集合和对象 属性和方法 事件和事件过程,26,8.5 综合示例,27,END,28,标准数据类型,29,用户自定义数据类型,语句格式: Type 数据类型名 数据元素名1(下标) As 类型名 数据元素名2(下标) As 类型名 End Type 可以直接定义并使用其中某一数据元素 (P238239),30,常量,在程序运行过程中值保持不变的量 字符串常量放在一对“内,日期时间型常量放在一对#内 例:“中国“ 、#9/1/2005# 符号常量:用标识符保存一个常量值 例:用Const语句定义符号常量Pai Const Pai = 3.14159 系统常量:true,false,yes,no,on,off,null,31,变量,变量的命名原则 第一个字符必须是字母,可以包含字母、数字和下划线 包含的字符数不超过255个 不能与VBA的关键字同名 不能与函数过程、语句和方法同名 同一作用域内不能有同名变量出现 不能使用标点符号和下列字符:! & $ # 空格,32,变量,变量的声明 变量在使用前应尽可能声明 声明语句格式: Dim As , As ,. Dim StudentName As String Dim Grade As Integer, AvgGrade As Single Dim i,j,k As Integer 默认情况下,变量可以不经声明便开始使用,此时该变量被自动声明为Variant类型,33,变量的应用范围,过程级变量 应用范围:只在声明它们的过程中可用 声明关键字:Dim 、Static 私有模块级变量 应用范围:对该模块所有过程可用 声明关键字: Private 公有模块级变量 应用范围:项目中所有过程和其他模块均可用 声明关键字:Public,34,数组,由相同数据类型的变量构成有序序列,由变量名和数组下标组成,其中的每个数据称为元素,Array(0)=17 Array(1)=19 ,35,数组的特性,每个元素类型相同,占用同样大小的存储空间 数组中的元素在内存中连续存放 通过下标可以访问数组中的每个元素 下标类型可以是整数、常量、变量或算术表达式 数组可分为一维数组、二维数组和多维数组,36,一维数组的声明,一维数组中的元素呈直线状排列,每个下标对应一个元素 语法格式: Dim ( To 上界) As 数据类型 说明: 若省略下标下界,则数组的最小下标为0 例: Dim B(20) As Double Dim C(-3 to 3) As Integer B数组共有21个元素(下标起止范围是020) C数组共有7个元素(下标起止范围是-33),37,二维数组的声明,二维数组中数据排列呈平面排列,可保存一个二维表的信息 数组元素用行下标和列下标定位,定义格式: Dim ( To 上界, To 上界) As 数据类型 如果省略下标的下界值,则下界值默认为0 例:Dim D(2,3) As Integer Dim E(1 to 3,2 to 4) As Integer 声明D数组,有34=12个元素 声明E数组,有33=9个元素,38,数组的使用,数组声明后,数组中的每个元素都可以当作单个变量来使用,其使用方法和相同类型的普通变量相同 引用格式: 数组名(下标值) 例: B(2)=1.20 一维数组B的第3个元素 C(0)=3 一维数组C的第1个元素 D(1,1)=4 二维数组D的第2行第2个元素,39,对象变量,Access建立的数据库对象及其属性,均可被看成VBA程序中的变量加以引用 例:Access中窗体与报表对象的引用格式为 Forms(或Reports)!窗体(或报表)名称!控件名称.属性名称 forms或Reports分别表示窗体或报表对象集合 感叹号“!”分隔开对象名称和控件名称 “属性名称”缺省时,使用控件的基本属性 若对象名称中含有空格或标点符号,则需要用方括号将对象名称括起来,40,8.2.1 顺序结构,按语句书写的顺序执行 涉及到四种语句: 注释语句 声明语句 赋值语句 函数调用语句,41,顺序结构控制,1.注释语句 注释语句以Rem开头,但一般用撇号引导注释内容,用撇号引导的注释可以直接出现在语句后面 2.声明语句 声明语句用于命名和定义常量、变量、数组和过程。如: Sub sample() Const PI=3.14159 Dim I as Integer End Sub,42,顺序结构控制,3.赋值语句 程序设计中最基本的语句 为变量指定一个值或表达式 形式: 变量名=表达式 Dim i as Integer i=i+1 4.函数调用语句,43,8.2.2 选择结构,简单分支语句(单入单出) 语法形式:if Then End If,44,【例】,Sub example1() dim x as integer,y as integer x=Inputbox(“Please input x:“) if (x0) then y=x-7 if (x=0) then y=2 if (x0) then y=3*x*x MsgBox “y=”& y End Sub,45,选择结构示例(P250),随机出一道两位数加法题并检测回答的正确性 Sub test() Dim A As Integer, B As Integer, Sum As Integer Randomize Timer A = 10 +Rnd * 89 : B = 10 + Rnd * 89 Sum = InputBox(A & “+“ & B & “=?“, “两位数加法“) If Sum = A + B Then MsgBox “答案正确!“ If Sum A + B Then MsgBox “答错了!正确答案是“ & A + B End If End Sub,46,选择分支语句,单进双出 语法形式: If Then Else End If,47,例,Sub Passed() Dim Grade As Integer Grade = InputBox(“请输入考试分数:“) If Grade = 60 Then MsgBox “合格“ Else MsgBox “不合格“ End If End Sub,48,iif函数,If语句的特殊格式 语法: VarX=iif(条件,表达式1,表达式2) 作用: 条件为真时,返回表达式1的值,否则返回表达式2的值,49,例:求两个整数中的大数,Sub example2() Dim a,b,max As Integer a=InputBox(“Please input a number:“) b=InputBox(“Please input another number:“) max=iif(ab,a,b) MsgBox “The bigger one is “& max End Sub,50,多重选择分支,语法形式 If Then ElseIf Then ElseIf Then Else End If,51,选择结构控制示例(P252),Sub Grade() Dim Grade As Integer, Evalu As String Grade = InputBox(“请输入考试分数:“) If Grade 60 Then Evalu = “不合格“ ElseIf Grade 90 Then Evalu = “合格“ Else Evalu = “优秀“ End If MsgBox Grade & “分的等级为“ & Evalu End Sub,52,多重分支语句,语法形式 Select Case Case Case Case Case Else End Select,53,流程图,语句序列2,语句序列1,语句序列n,语句序列n+1,值1,值2,值n,Else,测试条件,54,选择结构控制示例(P253),Sub Grade1() Dim Grade As Integer, Evalu As String Grade = InputBox(“请输入考试分数:“) Select Case Grade Case 100: Evalu = “满分“ Case 90 To 99: Evalu = “优秀“ Case 80 To 89: Evalu = “良好“ Case 70 To 79: Evalu = “中“ Case 60 To 69: Evalu = “合格“ Case Is 60: Evalu = “不合格“ Case Else: Evalu = “数据错误“ End Select MsgBox Grade & “分的等级为“ & Evalu End Sub,55,读下列程序段,判断其功能,Sub example3() Dim a,b,c,temp As Integer Dim result As String a=InputBox(“Please input the first number:”) b=InputBox(“Please input the second number:”) c=InputBox(“Please input the third number:”) If ab Then temp=a : a=b: b=temp If ac Then temp=a : a=c: c=temp If bc Then temp=b : b=c: c=temp result = Str(a) + Str(b) + Str(c) MsgBox “The index is:“ & result End Sub,56,8.2.3 循环结构,FOR Next 循环 格式: For =初值 To 终值 Step Exit For Next 说明:步长值为1时可省略Step子句,57,流程图,表达式2,语句,假,表达式3,For循环的下一语句,真,表达式1,表达式1(只计算1次): 循环变量=初值 表达式2: 循环变量终值 或循环变量终值 表达式3: 循环变量=循环变量+步长,58,循环结构示例,编写Even()过程,输出1020的所有偶数之和 Sub Even() Dim i As Integer, Sum As Integer For i = 10 To 20 Step 2 Sum = Sum + i Next i MsgBox Sum, , “10至20之间的偶数之和“ End Sub,59,循环结构示例,编写E2()过程,输出100以内所有自然数之和Sub E2() Dim I As Integer, S As Integer For I = 1 To 100 Step 1 S = S + I Next I MsgBox S, , “ 100以内自然数之和“ End Sub,60,例,Dim x As Integer,i As Integer X=0 For i=20 To 1 Step -2 x=x+i5 Next i 执行上段程序后,x的值为 。,18,61,例:中间退出循环,判断整数 m 是否素数,Sub example3() Dim m As Integer, k As Integer, i As Integer m = InputBox(“请输入一个整数:“, “输入框“) k = m - 1 For i = 2 To k Step 1 If (m Mod i = 0) Then Exit For Next i If (i k) Then MsgBox m & “ is a prime number!“ Else MsgBox m & “ is not a prime number!“ End If End Sub,如果Exit For被执行了,则该数不是素数,那么i=k,62,8.2.3 循环结构,Do Loop循环 格式1:Do While|Until Exit Do Loop 格式2:Do Exit Do Loop While|Until ,63,流程图,真,假,循环体,循环条件,真,假,循环体,循环条件,格式1,格式2,64,例,计算1+2+100,Sub example4() Dim s As Integer, i As Integer s=0 i=1 Do s = s + i i = i + 1 Loop while (i=100) MsgBox “1+2+.+100=“ & s End Sub,65,循环结构示例(P255),寻找乘积为399的两个相邻的奇数 Sub example5() Dim s As Integer s=1 Do While s*(s+2) 399 s=s+2 If s*(s+2)=399 Then MsgBox s &“& (s+2) &“=“& s*(s+2) End If Loop End Sub,66,循环结构示例,我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿 Sub Popu() x=13 n=0 Do While x26 x=x*1.008 n=n+1 Loop MsgBox n End Sub,67,循环结构示例,有一张厚0.5mm面积足够大的纸,将它不断对折。求对折多少次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 燃气管网施工机械租赁合同
- 服务拆除施工合同
- 幼儿园合作伙伴协议
- 环保咨询顾问聘用协议
- 读儒林外史的读后感500字8篇
- 旅游开发招投标保密承诺书
- 服装厂消防安全员招聘协议
- 仪器仪表采购招投标策略分析
- 餐厅领班个人年终总结5篇
- 医疗设备招标文件范本一
- 全国大学生职业生涯规划大赛
- 肩关节镜术的健康宣教
- 关于学校安全保卫工作存在的问题及对策
- 2024年广西铝业集团有限公司招聘笔试参考题库附带答案详解
- 2024年西藏开发投资集团有限公司招聘笔试参考题库含答案解析
- 爱校主题班会课件
- 黑龙江省哈尔滨市南岗区2023-2024学年九年级上学期期末语文试题
- 国际人权法与强制劳动保护人权的法律框架
- 设立绿化养护服务公司商业计划书
- 勘察设计单位管理制度模版
- 2024年中国铁塔湖北分公司招聘笔试参考题库含答案解析
评论
0/150
提交评论