《vba编程基础》PPT课件.ppt_第1页
《vba编程基础》PPT课件.ppt_第2页
《vba编程基础》PPT课件.ppt_第3页
《vba编程基础》PPT课件.ppt_第4页
《vba编程基础》PPT课件.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第8章VBA程序设计 主要内容 Vba概述Vba编程基础程序流程控制面向对象的程序设计 2 3 8 1VBA概述 1 VBA简介VBA是VisualBasicforApplication的缩写 是微软Office系列软件的内置编程语言 与VisualBasic具有相同的语言功能 在VBA中 程序是由过程组成的 过程由根据VBA规则书写的指令组成 用VBA编写的代码将保存在Access的一个模块里 并通过类似在窗体中激发宏的操作那样来启动这个模块 从而实现相应的功能 4 2 VBA的编程环境 5 8 2VBA编程基础 一 数据类型VBA支持多种数据类型 Access数据表中的字段使用的数据类型 OLE对象和备注类型除外 在VBA中都有对应的类型 VBA的数据类型 符号 字段类型及取值范围 如表9 9所示 P229 6 二 常量和变量 1 常量常量是指在程序运行时其值不会发生改变的数据 VBA的常量有4种类型 1 直接常量直接常量就是直接表示的数值或字符串 如1234 17 28E 9 StuID 等 2 符号常量符号常量使用关键字Const来定义 格式如下 Const符号常量名称 常量值例 ConstPI 3 1415926 3 固有常量特殊的符号常量 已经预先在类库中定义好 例 visualbasic类库的常量以 vb 开头 如vbred 7 2 变量 变量是指程序运行时值会发生变化的数据 变量的三要素是 变量名 变量类型和变量的值 变量名只能由字母 数字 汉字和下划线组成 且必须以字母开头 不区分字母的大小写 长度不能超过255 对变量进行声明可以使用类型说明符号 Dim语句和DefType语句 8 1 使用类型说明符号声明变量 VBA中的类型说明符号有 Integer Long Single Double String Currency 使用时放在变量名称的末尾 例 intX 123x 123douY 12 34strZ VBA 9 2 使用Dim语句声明变量 声明变量的一般方法是用Dim语句 其格式为 Dim变量名 As数据类型 说明 省略 As数据类型 则默认定义的变量为Variant数据类型 可以使用Dim语句在一行中声明多个变量 例 DimstrXAsStringDimintXAsInteger strZAsStringDimi j kAsInteger 10 3 用户自定义类型的声明与使用 用户自定义类型可包含一个或多个基本数据类型的数据元素 或一个已经定义好的用户自定义类型 用户自定义类型使用Type语句进行声明 定义格式如下 Type 数据类型名 AsAs EndType 例 TypeXSNameAsString 10BirthDateAsDateSexAsIntegerEndType 注意 Type语句只能在模块的通用声明部分使用 11 使用了Type语句声明了一个用户自定义类型后 就可以在该声明范围内的任何位置声明该类型的变量 可以使用Dim语句声明用户自定义类型的变量 例 DimxasXSx Name 张红 x BirthDate 80 10 12 x Sex 0用户自定义类型的变量用 变量名 域名 的格式进行引用 12 三 运算符和表达式 在VBA编程语言中 可以将运算符分为算术运算符 字符串运算符 关系运算符 逻辑运算符和对象运算符5种类型 不同的运算符用来构成不同的表达式 来完成不同的运算和处理 表达式是由运算符 函数和数据等内容组合而成的 根据运算符的类型可以将表达式分为算数表达式 字符串表达式 关系表达式 逻辑表达式和对象运算表达式5种类型 13 1 算术运算符 算术运算符用于数值的算术运算 VBA中的算术运算符如下表所示 14 算术运算符之间存在优先级 优先级是决定算术表达式的运算顺序的原则 算术运算符优先级从高到低依次为乘幂 乘除法 整除 求余数和加减法 由算术运算符 数值 括号和正负号等构成的表达式称为算术表达式 在算术表达式中 括号和正负号的优先级比算术运算符要高 括号比正负号的优先级高 15 例 求算术表达式 8 20 4Mod6 5 2 的结果 计算的过程如下 1 计算 5 2 的结果为2 表达式化为 8 20 4Mod6 22 计算6 2的结果为36 表达式化为 8 20 4Mod363 计算20 4的结果为80 表达式化为 8 80Mod364 计算80Mod36的结果为8 表达式化为 8 85 计算 8 8的结果为0 16 2 字符串运算符 连接运算符具有连接字符串的功能 在VBA中有 和 两个运算符 运算符用来强制两个表达式作字符串连接 运算符是当两个表达式均为字符串数据时 才将两个字符串连接成一个新字符串 17 3 关系运算符 关系运算符也称为比较运算符 用来对两个表达式的值进行比较 关系运算的结果为逻辑值 真 True 和假 False 18 4 逻辑运算符 逻辑运算也称为布尔运算 用于连接两个或多个关系表达式 其结果为逻辑值 真 True 和假 False 逻辑运算符的优先级低于关系运算符 常用的3个逻辑运算符之间的优先级由高到低依次为 Not And Or 19 5 对象运算符 对象运算符有 和 两种 使用 运算符可以引用一个窗体 报表或窗体和报表上的控件 例 20 使用 运算符可以引用窗体 报表或控件等对象的属性 引用格式为 控件对象名 属性名 在实际使用中 运算符与 运算符配合使用 用于标识引用的一个对象或对象的属性 例 Forms 学生信息 Command1 Enable 21 一 语句一个程序由多条不同功能的语句组成 每条语句能够完成某个特定的操作 在VBA程序中 按照功能的不同将程序语句分为声明语句和执行语句两类 声明语句用于定义变量 常量或过程 执行语句用于执行赋值操作 调用过程和实现各种流程控制 8 3程序流程控制 22 1 注释语句 1 Rem语句 语句格式 Rem注释内容 2 英文单引号 语句格式 注释内容注释语句可以添加到程序模块的任何位置 并且默认以绿色文本显示 例 str1 hello Remstr1赋值为 hello str2 world str2赋值为 world 2 赋值语句赋值语句是为变量指定一个值或表达式 语句格式 变量名 值或表达式 3 输入输出语句 Inputbox函数dimstrinputasstringstrinput inputbox 请输入学生姓名 Msgbox函数Msgbox 欢迎你 strinput Debug窗口视图 立即窗口print方法是用 或 连接若干个输出项 24 程序流程控制结构 执行语句可以根据流程的不同分为顺序结构 条件结构和循环结构3种 顺序结构是按照语句的先后顺序依次执行 条件结构是根据条件选择执行不同的分支语句 又称为选择结构 循环结构是根据某个条件重复执行某一段程序语句 顺序结构 例 请输入圆的半径 计算圆的面积 Submj DimrAsSingleDimsAsSingleConstpiAsSingle 3 14r InputBox 请输入半径 s pi r rDebug PrintsEndSub 26 分支结构 分支结构也称为选择结构 其特点是程序按照条件表达式的值执行相应语句 在VBA中 通常用If语句 SelectCase语句或条件函数实现分支结构 1 If语句If语句有三种形式 单分支 双分支和多分支 27 1 单分支结构 单分支If语句的基本格式如下 If条件表达式Then语句序列EndIf或 If条件表达式Then语句序列功能 当程序执行到这种格式的If语句时 如果条件表达式为真 将执行Then后面的语句序列 如果条件表达式为假 程序将跳过语句序列而直接执行EndIf后面的语句 28 例 输入两个数到变量x和y中 比较x和y的值 x保存较大的数 y保存较小的数 并在立即窗口中输出 PublicSubex1 DimxAsInteger yAsInteger tAsIntegerx InputBox 请输入x的值 y InputBox 请输入y的值 Ifx ythent x t为中间变量 用于实现x与y值的交换x yy tEndIfDebug Printx yEndSub If语句还可以写成 Ifx ythent x x y y t 29 30 2 双分支语句 双分支If语句的格式如下 If条件表达式Then语句序列1Else语句序列2EndIf功能 当程序执行到这种格式的If语句时 如果条件表达式为真 将执行Then和Else之间的语句序列1 如果条件表达式为假 程序将执行Else和EndIf之间的语句序列2 31 例 输入一个数 如果该数大于等于0 则求出其平方根并显示在立即窗口中 否则显示消息 这个数无平方根 PublicSubex2 DimaAsIntegera InputBox 请输入一个数 Ifa 0ThenDebug Printsqr a Elsemsgbox 这个数无平方根 EndIfEndSub 32 3 If Then ElseIf语句 语句格式为 IfThenElseIfThen ElseIfThenElse EndIf 说明 运行时 从表达式1开始逐个测试条件 当找到第一个为True的条件时 即执行该条件后所对应的语句块 33 例 编程根据输入的学生成绩 评定其等级 标准是 90 100分为 优秀 80 89分为 良好 70 79分为 中等 60 69分为 及格 60分以下 不合格 PublicSubex3 DimxAsIntegerx InputBox 请输入成绩 Ifx 90ThenDebug Print 优秀 ElseIfx 80ThenDebug Print 良好 ElseIfx 70ThenDebug Print 中等 ElseIfx 60ThenDebug Print 及格 ElseDebug Print 不及格 EndIfEndSub 读程序 PrivateSubCommand1 Click Dima kAsIntegera InputBox 请输入a的值 Ifa 60Thenk 1ElseIfa 70Thenk 2ElseIfa 80Thenk 3ElseIfa 90Thenk 4EndIfMsgBoxkEndSub 35 4 If语句的嵌套 在If或Else后面的语句序列中又包含If语句 称为If语句的嵌套 格式二 If表达式1Then Else If表达式2Then EndIf EndIf 格式一 If表达式1Then If表达式2Then EndIf Else EndIf Subgrade DimcjAsIntegercj InputBox 请输入成绩 Ifcj 90Thenmsgbox 优秀 ElseIfcj 80Thenmsgbox 良好 ElseIfcj 70Thenmsgbox 中等 ElseIfcj 60Thenmsgbox 及格 Elsemsgbox 不及格 EndifEndifEndifEndifEndSub 37 2 SelectCase语句 当条件选项较多时 使用If语句多重嵌套控制结构会使程序变得很复杂 而Select语句就可以解决这类问题 语句格式为 SelectCaseCase语句序列1Case语句序列2 CaseElse语句序列n 1 EndSelect 38 说明 1 SelectCase后的变量或表达式只能是数值型或字符型表达式 2 执行过程是先计算SelectCase后的变量或表达式的值 然后从上至下逐个比较 决定执行哪一个语句块 如果有多个Case后的表达式与其相匹配 则只执行第一个Case后的语句块 3 语句中的各个表达式列表应与SelectCase后的变量或表达式同类型 各个表达式列表可以采用下面的形式 表达式 a 5 用逗号分隔的一组枚举表达式 2 4 6 8 表达式1To表达式260to100 Is关系运算符表达式Is 60 39 例 用SelectCase语句改写上例 PublicSubex3 DimxAsIntegerx InputBox 请输入成绩 SelectCasexCase90To100Debug Print 优秀 Case80To89Debug Print 良好 Case70To79Debug Print 中等 Case60To69Debug Print 及格 CaseElseDebug Print 不及格 EndSelectEndSub 读程序 PrivateSubForm Click a 1Fori 3To1Step 1SelectCaseiCase1 3a a 1Case2 4a a 2EndSelectNextiMsgBoxaEndSub 41 循环结构 循环控制结构也叫重复控制结构 特点是程序执行时 该语句中的一部分操作即循环体被重复执行多次 在VBA中 执行循环控制的语句有For循环语句和Do Loop循环语句 42 1 For循环语句 语句格式为 For to Step ExitFor Next 说明 1 循环控制变量的类型必须是数值型 2 步长可以是正数 也可以是负数 如果步长为1 Step短语可以省略 3 根据初值 终值和步长 可以计算出循环的次数 因此For语句一般用于循环次数已知的情况 4 使用ExitFor语句可以提前退出循环 43 例 编程用For语句求1 2 3 10之和 PublicSubex4 DimsAsInteger iAsIntegers 0Fori 1To10Step1s s iNextiDebug PrintsEndSub 该循环的执行过程如下 1 首先给i赋初值1 2 测试i是否超过终值10 如果没有 则执行累加 否则退出循环转到步骤 5 3 将i加上一个步长 4 重复步骤 2 和步骤 3 5 继续执行Next后面的语句 44 2 Do Loop循环语句 形式1 Do While Until 语句块 ExitDo 语句块Loop 该语句适合的范围更广 PublicSubex5 下面的程序用DoWhile Loop语 句求1 2 3 10之和 DimsAsInteger iAsIntegers 0 i 1DoWhilei 10s s ii i 1LoopDebug PrintsEndSub 执行过程是 在每次循环开始时测试条件 对于DoWhile语句 如果条件成立 则执行循环体的内容 然后回到DoWhlie处准备下一次循环 否则如果条件不成立 则退出循环 对于DoUntil语句 则正好相反 当条件满足时退出循环 ExitDo语句的作用是提前终止循环 45 与For语句相比 有下列几点不同 1 Do Loop语句不仅可用于循环次数已知的情况 而且可用于循环次数未知的情况 因此适用的范围更广 2 Do Loop语句没有专门的循环控制变量 但一般应有一个专门用来改变条件表达式中变量的语句 使得随着循环的执行 条件趋于不成立 或成立 最后达到退出循环 46 Do语句块 ExitDo 语句块Loop While Until 说明 和形式1不同的是 在每次循环结束时测试条件 因此 二者的区别是如果一开始循环条件就不成立 则形式1中的循环体部分一次也不执行 而形式2中的循环体部分被执行一次 形式2 读程序 例 试分析如下程序运行结束之后变量J的值 PrivateSubFun DimJAsIntegerJ 10DoJ J 3LoopWhileJ 19EndSub 48 面向对象程序设计示例 例1 创建如下图所示的窗体 计算圆的面积和周长 要求在文本框中输入了圆的半径后 单击 计算 按钮 在窗体的另外两个文本框中分别输出圆的面积和周长 49 本例除了采用前面介绍的方法制作窗体外 最关键的是编写 计算 按钮的单击事件过程 为按钮添加事件代码的方法是 用鼠标右键单击按钮 在弹出的快捷菜单中选择 事件生成器 命令 在打开的 选择生成器 对话框中选择 代码生成器 选项 转到VBE环境 50 计算 按钮的Click事件过程如下

温馨提示

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

评论

0/150

提交评论