已阅读5页,还剩94页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Access程序设计 文科计算机小公共课规划教材 总目录 第1章数据库基础第2章数据库和表第3章查询第4章窗体第5章报表第6章宏第7章页第8章模块与VBA程序设计第9章二级公共基础知识 第8章模块与VBA程序设计 难重点 类模块及控件对象的代码表示运算符与表达式选择结构的程序设计常用系统函数 知识网络图 例8 1 用户登录窗体中 退出 按钮VBA代码 1 查看 退出 命令按钮事件 2 查看事件代码 8 1初识VBA编 单击进入代码编写 说明 事件过程PrivateSubCommand7 Click EndSubSub表示定义一个过程 EndSub表示该过程的结尾处 Command7 Click 表示过程名称 在access中 过程名为 控件名称 事件名称 过程名后必须有一个 Command7为 退出 按钮的名称 Click为单击事件 事件过程代码在PrivateSubCommand7 Click 和EndSub中间的几行代码为实现 退出 功能的VBA代码 实现退出的具体代码为DoCmd Quit 其他代码用于错误处理 这些代码将在稍后详细介绍其作用 8 1初识VBA编 8 1 1窗体事件事件 event 是发生在控件对象上且可以辨认的动作 如像单击鼠标或按下某键等 并且可以写某些代码来响应此述动作 对事件的响应一般有两种方法 一种方法是使用宏来响应控件对象事件 另一种方法是编写VBA代码过程 8 1初识VBA编 例8 2 如果使用宏来响应控件对象事件 比如同样创建一个可退出access程序的按钮 可采用以下步骤 1 创建一个宏 宏名为 退出系统 操作选择 Quit 2 创建一个窗体 在窗体上添加一个命令按钮 3 打开命令按钮属性窗口 切换到 事件 选项页 单击其单击事件下拉框 在弹出的列表中选择 退出系统 宏 如图8 6 8 1初识VBA编 表8 1部分事件过程 VBA编程环境 VBE 进入VBE可以选择以下几种方式 1 将某个对象的某个事件设为 事件过程 如图8 4所示 单击右侧的 2 在窗体或报表的 设计视图 中单击工具栏上的 代码 按钮 3 在数据库窗口中 单击菜单 工具 宏 VisualBasic编辑器 命令 4 选择数据库模块对象 单击数据库窗口中 新建 或者双击其中一个已经存在的模块对象 VBE 模块 模块是由VBA语言编写的程序的集合 模块分类1 类模块 和某窗体或报表相关联2 标准模块 独立于窗体和报表 类模块 标准模块 将宏转化为模块 宏的每个操作都有对应的VBA语句 因此可以将宏转化为模块 加快运行速度 图8 8 转换宏 对话框 标准模块名 创建模块 类模块 对某个控件编写事件代码时就自动建立了标准模块 1 在数据库窗口或VBE窗口 执行菜单 插入 模块 命令 2 在数据库窗口 单击 模块 对象 然后单击 新建 按钮 VBA编程基础 1 注释格式1 rem注释内容格式2 注释内容说明 为英文符号单引号2 连写如果要在同一行上书写多条语句 需要使用 号分隔不同的语句 3 换行一条语句太长 可以将该语句写成几行 在换行处加空白加下划线 数据类型 变量 声明变量格式 dim变量名 as数据类型 说明 如果有as数据类型选项 该变量只能储存该类型的值 否则可以是任何类型 如 DimuseridasstringDimxasinteger yasintegerDimi说明 第二条语句同时声明了两个变量 i为变体类型 可以储存任何类型数据 变量赋值userid 11080 X 1改变变量的值X x 1说明 将x的值增加1 常量 在VBA中需要反复使用的常数 为了便于记忆和维护 可以采用一个名字来表示即常量 格式 Public Private Const常量名 as数据类型 值说明 public只能用在标准模块中 表示该常量可以在所有模块中使用 Private该常量只能声明它的模块中使用 如 PublicConstfine 0 1说明 在标准模块中声明后 所有模块中都可以使用pi常量 数组 1 声明数组格式 Dim数组名 n as数据类型Dim数组名 mto n as数据类型n是数组的下标上界 m是数组的下标下界 m可以省略 如省略表示0 数组共有n m 1个元素 举例Dima 2to5 asinteger说明 共有数组a 2 a 3 a 4 a 5 四个元素Dimb 5 asinteger说明 共有数组b 0 b 1 b 2 b 3 b 4 b 5 六个元素赋值a 2 10说明 将10赋值给a 2 元素 二维数组 二维数组由行列两维构成的 若将每行看成一个一维数组 二维数组可看成多个一维数组构成 1 声明格式 Dim数组名 m1to n1 m2to n2 as数据类型n1 m1第一维下标上下界 n2 m2是第二维下标上下界 m1 m2都可以省略 如省略表示0 举例DimMatrix 3 4 AsInteger 2 赋值Matrix 0 4 20 运算符和表达式 1 算术运算 算术运算符有 mod 表8 3数字运算符和字符运算符 运算符和表达式 2 关系运算常用的比较操作符有 大于 小于 小于等于 表8 4比较运算符 运算符和表达式 3 逻辑运算逻辑运算是对真或假的运算 产生逻辑值 真或假 优先级关系 not and or xor 表8 5逻辑运算符 表达式案例 例8 4 判断表达式的结果在VBE窗口 运行菜单 视图 立即窗口 命令 弹出如图8 9立即窗口 输入 号 在问号后输入表达式 回车后即可显示表达式结果 例 3 3 3 39根据优先级关系相当于 3 3 3 3 图8 9立即窗口 表8 6表达式举例 8 4系统常用函数及对象 8 4 1标准函数在VBA中 提供了大量的内置函数 可以完成许多的操作 比如字符串函数Mid 统计函数Max 等 在编程是直接引用就可以了 非常方便 函数包含三个要素 函数名 参数 返回值 函数格式 函数名 参数列表 说明 1 参数列表表示用逗号隔开的值或表达式 不同函数的参数个数不同 有些函数没有参数 2 一般函数都有一个返回值 即函数的运算结果 通常函数的返回值的类型是固定的 且在调用时赋值给一个变量 系统函数按其功能主要分为 数学函数 日期函数 字符串函数 转换函数 系统提供了大量系统函数 可以在VBE的立即窗口验证 1 数字函数 1 求绝对值格式 Abs 数值 功能 返回参数的绝对值Abs 10 结果 10 2 取整部分格式 int 数值 功能 返回不大于参数的最大整数部分Int 13 4 结果 13Int 13 6 结果 13Int 13 6 结果 14 3 取整数部分函数格式 fix 数值 功能 参数的整数部分Fix 13 4 结果 13Fix 13 6 结果 13Fix 13 6 结果 134 随机函数格式 rnd 数值 功能 产生一个0 1的随机数 2 日期函数 1 当前日期函数格式 date 功能 返回系统当前日期 2 当前时间函数格式 time 功能 返回系统当前时间 3 当前日期时间函数格式 now 功能 返回系统的日期和时间 4 取出年份函数格式 year 日期 功能 取出日期中的年份 整型Year date 结果 返回系统日期中的年份 5 取出日月份函数格式 month 日期 功能 取出括号日期中月份 整型 Month date 结果 返回系统日期中的月份 3 字符串函数 1 长度函数格式 len 字符串 功能 返回括号中字符串的长度 即字符串中字符的个数 Len welcometoBeijing 结果 18说明 包含2个空格 2 转换大小写格式 ucase 字符串 lcase 字符串 功能 将字符串全部转换为大小写字母Ucase Beijing 结果 BEIJING 4 左边截取格式 left 字符串 整数N 功能 从字符串左边截取N个字符Left beijing2008 7 结果 beijing 5 右边截取格式 right 字符串 整数N 功能 从字符串右边截取N个字符 Right beijing2008 4 结果 2008 6 中间截取字符串格式 mid 字符串 开始位置N1 截取长度N2 功能 从字符串左边第N1个位置开始截取N2个字符串 Mid 北京欢迎你 3 2 结果 欢迎 3 字符串函数 7 删除左边空格格式 ltrim 字符串 功能 删除字符串左边空格Ltrim welcometobeijing 结果 welcometoBeijing 8 删除右边空格格式 rtrim 字符串 功能 删除字符串右边空格 9 删除两边空格格式 trim 字符串 功能 删除字符串开始和尾部空格 10 字符串查找格式 instr N str1 str2 功能 在str1中从N位置开始查找str2 返回首次出现的位置 N可以省略 省略表示总第一个字符开始查找 若找到返回所在位置整数 若找不到 返回值为0 Instr welcometobeijing o 结果 5说明 在 welcometobeijing 中查找o 返回o所在位置Instr 6 welcometobeijing o 结果 10说明 在 welcometobeijing 中从第6个字符开始查找o 返回o所在位置 4 转换函数 1 数字转换为字符串格式 str 数字 功能 将数字转换为字符串 北京 2008结果 出错 字符串不能和数字运算 北京 str 2008 结果 北京2008 2 字符串转换为数字格式 val 字符串 功能 将数字字符串转换为数值 Val 100 结果 100 3 返回字符的ASCII码格式 asc 字符 功能 返回字符的ASCII码值Asc a 结果 97说明 小写 a 的ASCII码为97 4 字符代码转换为字符格式 chr 字符代码 功能 返回字符代码 ASCII码所对应的字符 Chr 97 结果 a其他类型转化函数有 CBool CByte CCur CDate CDbl CDec CInt CLng CSng CStr CVar 5 验证函数在窗体上使用控件输入数据时 可通过一些验证函数验证输入的数据是否有效 比如使用文本框输入年龄时 可使用isnumeric判断输入的数值是否为数值 isNumeric isDate isNull isEmpty 6 输入输出函数 1 InputBox在一对话框来中显示提示 等待用户输入正文或按下按钮 并返回包含文本框内容的字符串 格式 InputBox prompt 标题 默认值 xpos ypos 例 在图8 10立即窗口中输入 inputbox 请输入姓名 弹出图8 11对话框 输入 王小风 单击 确定 按钮 返回值为输入的值 2 MsgBox在对话框中显示消息 等待用户单击按钮 并返回一个Integer类型的数值告诉用户单击哪一个按钮 格式 MsgBox prompt buttons title 例8 5 在图8 12立即窗口中输入 msgBox 确认退出系统吗 vbYesNo 退出警告 弹出图8 13对话框 单击 否 N 按钮 返回值为7 若单击 是 Y 返回值为6 7 数据库函数格式 DLookup expr domain criteria expr一个表达式 用于标识需要返回其值的字段 它既可以是用于标识表或查询中字段的字符串表达式 也可以是以该字段上的数据进行计算的表达式 domain可以是表名称或不需要参数的查询名称 criteria可选的字符串表达式 用于限制DLookup函数执行的数据范围 例如 criteria通常等价于SQL表达式中的WHERE子句 只是不含WHERE关键字 例 在立即窗口中输入 DLookup 密码 用户 用户号 11038 返回值 welcome说明 在 用户 表中查找 用户号 为 11038 的记录的 密码 字段值 8 分支函数 1 IIF函数格式 IIf expr truepart falsepart expr必要参数 用来判断真伪的表达式 truepart必要参数 如果expr为True 则返回这部分的值或表达式 falsepart必要参数 如果expr为False 则返回这部分的值或表达式 例 在立即窗口中输入 score 85 iif score 60 及格 不及格 结果 及格 2 switch函数格式 Switch 条件1 表达式1 条件2 表达式2 条件N 表达式N 功能 从左边条件开始计算 若某个条件成立 函数的值就为该条件对应的表达式的值 例 在立即窗口中输入 score 85 switch score 85 优秀 优秀 3 choose函数格式 Choose index choice 1 choice 2 choice n 功能 Choose会根据index的值来返回选择项列表中的某个值 如果index是1 则Choose会返回列表中的第1个选择项 如果index是2 则会返回列表中的第2个选择项 以此类推 例 在立即窗口中输入 xy 2 choose xy 英文学院 经贸学院 信息学院 经贸学院 8 4 2DoCmd对象使用DoCmd对象的方法 可以从VisualBasic运行MicrosoftAccess操作 操作可以执行诸如关闭窗口 打开窗体和设置控件值等任务 格式 DoCmd 方法名参数列表在宏操作可实现的功能几乎都可以采用DoCmd对象实现 DoCmd对象的方法名同功能相同的宏操作的操作名相同 并且所需要设置的参数及顺序也相同 例 打开窗体 主体导航 DoCmd OpenForm 主体导航 acNormal例 打开表 图书 OpenTable 图书 acViewNormal acEdit 程序流程控制 顺序 选择 分支 循环 重复 顺序结构 按照语句的先后顺序依次执行 选择结构 又称为条件结构或分支结构 根据条件分别执行不同的分支语句 循环结构 在满足某种条件的情况 反复执行某一段程序代码 直到条件不再满足 标号和goto语句 格式 Goto标号标号 例如 案例8 1 窗体中 退出 命令按钮事件过程如下 PrivateSubCommand7 Click OnErrorGoToErr Command7 ClickDoCmd QuitExit Command7 Click ExitSubErr Command7 Click MsgBoxErr DescriptionResumeExit Command7 ClickEndSub说明 1 有两个标签 Exit Command7 Click和Err Command7 Click 2 如果出现运行错误 执行OnErrorGoToErr Command7 Click 从该处直接跳转到Err Command7 Click处 而DoCmd Quit语句将不会被运行 条件语句 if语句 格式1 ifthenendif 格式2 ifthenelseendif 格式3 IfThenElseIfThenElseEndIf 案例 窗体 用户登录 代码实现 例8 6 窗体 用户登录 代码实现 1 功能说明 用户在文本框里输入用户编号和对应密码 然后在数据表 用户 里查找 若用户编号存在且密码正确 登录成功 进入导航窗口 主体导航 若用户编号不存在 提示 密码错误 2 运行界面见第四章图4 1所示 案例 窗体 用户登录 代码实现 程序代码 在 登录 按钮的 单击 Click 事件里编写代码 PrivateSubCommand1 Click IfDLookup 密码 用户 用户号 userid passwordThen 如果一致 就关闭当前窗体 并打开客户单位列表窗体DoCmd CloseDoCmd OpenForm 主体导航 Else 如果不一致 就将密码框清空password 设置密码框的焦点password SetFocus 弹出消息框报错MsgBox 密码错误 vbCriticalEndIfEndSub 案例 窗体 用户登录 代码实现 说明 DLookup 密码 用户 用户号 userid 函数中 密码 用户号 是 用户 表中字段 用户 指表名 userid指文本框中输入的值 完整的含义是 在 用户 表中查找 用户号 字段值为userid的记录所对应的 密码 字段的值 若找到的值与用户输入的password相同 则登录成功 否则登录失败 DoCmd Close关闭当前窗体 即用户登录窗体 然后DoCmd OpenForm 主体导航 打开窗体 主体导航 password 将密码文本框内容清空 password SetFocus 光标定位在密码文本框里 MsgBox 密码错误 vbCritical 弹出一个消息框 显示 密码错误 条件语句 SelectCase语句 格式 SelectCaseCaseCase CaseElse EndSelect 说明 1 可以是如下几种形式 1 表达式 如60 2 x 2 表达式1to表达式2 表示在表达式1和表达式2之间 3 is关系运算符 如is匹配 则VBA只执行第一个匹配的Case字句后面的语句组 3 如果前面的Case子句与都不匹配 则可在CaseElse子句后面的语句块 案例 例8 7 建立窗体 体重标准计算 1 功能说明 用户输入身高 米 和体重 公斤 计算体重指数BMI 身高 体重 体重 如BMI值区间为 18 20 为标准体重 20 23 之间 体重正常 但应注意适量运动 23 25 之间 轻度肥胖 注意节食 超过25 为肥胖 应立即减肥 3 设计步骤 在数据库窗口中 执行 窗体 在设计视图中创建窗体 命令 主要控件设计和属性见表8 7 表8 7健康指数计算控件属性 在 计算 按钮的 单击 Click 事件 PrivateSubCommand1 Click DimbmiAsDoublebmi weight value high value high value SelectCasebmiCaseIs 18result Caption 体重过轻 请注意营养 Case18To20result Caption 体重很标准哦 注意保持 Case20To23result Caption 体重标准 应适量运动 Case23To25result Caption 轻度肥胖 注意节食 CaseElseresult Caption 肥胖 请立刻减肥 EndSelectEndSub 说明 Weight high是文本框名称 表示用户输入的体重和身高 weight value表示文本框weight的值 value 属性 为文本框中输入的内容 Bmi是声明的双精度型变量 result是要显示结果的标签 caption属性表示该标签显示的文字 循环 for next语句 格式 For 初值To末值 Step步长 ExitFor Next说明 执行过程如图8 20所示 循环变量必须是数值型 步长默认为1 一般初值小于末值 如果初值大于末值 步长要为负数 案例 例8 8 创建窗体 数学问题描述 1 功能说明 已知公鸡4文钱 母鸡3文钱 如果给定总钱数和要买的鸡的总数量 钱正好用完 请计算所买的公鸡和母鸡分别有几只 2 程序界面如图8 21所示 3 控件属性 主要的控件及属性如下 其他控件自行设定 表8 7 4 程序代码 计算 按钮的 单击 事件输入如下代码 PrivateSubCommand1 Click Fori 1ToInt money 4 Ifi 4 num i 3 Val money Thenresult Caption 公鸡 CStr i 母鸡 CStr num i ExitForEndIfNextiIfi Int money 4 Thenresult Caption 此题无解 EndIfEndSub 说明 公鸡的总数不超过Int money 4 int为取整 所以循环的末值设定为Int money 4 Val money 将字符串转换为数值 在文本框中输入的数值会认为是字符串 所以先转换为数值后再进行比较 i 4 num i 3 Val money 该条件成立 表示满足鸡总数量和钱总数量的要求 满足要求后 在result标签上显示结果 同时exitfor退出循环 不再进行其他测试 CStr i 将i转化为字符串 由于 公鸡 为字符串 i为整数 要将i转化为字符串才能使用字符串连接符 号 也可以使用 连接 如果没有满足条件的组合 循环结束后i的值为Int money 4 1 所以 如果i的值大于Int money 4 即表示没有满足条件的组合 循环 do loop语句 格式1 Do while until条件表达式 ExitDo Loop格式2 Do ExitDo Loop while until条件表达式 说明 图8 15 图8 16分别是格式1 格式2的执行过程格式1先判断后执行 格式2先执行后判断 循环体内的语句至少执行一次 While指明条件为真是执行循环体内的语句 until则相反 条件为假时执行循环体语句 如果没有while或until 循环体中一定要有exitdo 否则循环无法结束 案例 例8 9 建立窗体 桃子计算 1 功能说明 猴子第一天摘下若干个桃子 当即吃了一半 还不过瘾又多吃了一个 以后每天早上都吃了前一天的一半又多一个 到第N天早上想再吃时 见只剩下一个桃子 若给定天数N 求第一天共摘了多少桃子 3 控件属性 主要控件如下 其他控件属性参见以前例子 表8 9 4 程序代码 计算 按钮的 单击 事件输入如下代码 PrivateSubCommand1 Click Dimi sumAsIntegersum 1i n 1DoWhilei 1sum sum 1 2i i 1Loopresult Caption sumEndSub 说明 i表示第几天 sum表示第i天剩余的桃子数量 第N天剩余桃子为sum 1 那么第N 1天剩余桃子为 sum 1 2 依次类推 然后再计算第N 2天的剩余桃子 过程 过程就是VBA代码单元 一个过程包含一系列VBA语句和方法 过程有两种形式 Sub 子过程 Function 函数过程 Sub子过程 Sub子过程sub 子过程 的功能是将一定的语句集合起来 可接受相应的参数 并完成一定的任务 定义格式 Private Public Sub子过程名 参数 As类型 语句 ExitSub 语句EndSub说明 Private表明该过程只能在本模块中被调用 Public表明该过程能在所有模块中被调用 ExitSub立即退出该过程 即ExitSub和endsub之间的部分不被执行 调用格式 调用过程方法 call过程名 参数 在VBA中 sub过程有两类 通用过程和模块过程 通用过程 通用过程独立于窗体和报表 能被多个窗体或报表调用编写通用过程 1 选择菜单 插入 模块 插入一个新标准模块 同时进入VBE编辑器界面 2 双击该标准模块 选择菜单 插入 过程 出现图8 25 3 选择类型 子程序 在名称栏输入过程名称 4 在生成的过程框架里输入代码即可完成 案例 例8 10 创建一个标准模块 在模块中创建一个通用过程fine 创建一个窗体 罚金计算 调用该过程 1 功能说明 编写一个通用过程fine n 可根据图书归还过期天数n计算应缴罚金 然后在一个窗体模块中调用该模块 2 程序界面图8 26 3 控件属性见表8 10 表8 10 4 编写过程 进入VBE界面 添加一个新的标准模块或在选定一个已有的标准模块 执行菜单 插入 过程 命令 出现图8 25 输入过程名 fine 类型选择 子程序 范围选择 公共的 会在当前模块自动产生一个过程fine 对其进行修改 代码如下 PublicSubfine n DimfineAsDoublefine n 0 1MsgBox 罚金 CStr fine 元 EndSub说明 fin n n为参数 在调用的时候赋给它一个值过程没有返回值 5 调用过程 程序代码 计算 按钮的 单击 事件输入如下代码 PrivateSubCommand1 Click Callfine n EndSub说明 n为文本框 表示用户输入的过期天数 Callfine n 为调用fine过程 同时将用户输入的值传递给过程fine 事件过程 事件过程只能出用户动作或系统触发 是和某个窗体或报表关联一个控件的事件过由该控件的实际名字 一个下划线和事件名组成的 例如 如果希望在单击 个名称为 命令3 的命令选钮后 则调用事件过程PrivateSub命令3 Click 为某个对象创建事件过程的方法为 1 单击鼠标左键选定要添加事件过程的对象 2 单击鼠标右键或选择菜单 视图 属性 出现该对象的属性对话框 3 选择 事件 选项 单击相应事件后的 进入事件过程的代码编写 函数 函数过程定义格式为 Private Public Static function函数名 参数 As类型 1 语句 Exitfunction 语句函数名 表达式Endfunction函数调用格式 变量 函数名 参数 案例 8 11 编写一个函数给定过期天数计算应缴罚金 并创建一个窗体 函数调用 调用该函数 1 功能说明 编写一个函数fine n 可根据图书归还过期天数n计算应缴罚金 然后在一个窗体模块中调用该模块 2 程序界面和 例8 10 中的图8 26一样 3 控件属性参见表8 10 4 编写过程 进入VBE界面 添加一个新的标准模块或在选定一个已有的标准模块 执行菜单 插入 过程 命令 出现图8 25 输入过程名 getFine 类型选择 函数 范围选择 公共的 会在当前模块自动产生一个过程getFine 对其进行修改 代码如下 PublicFunctiongetFine n DimfineAsDoublefine n 0 1getFine fineEndFunction说明 n为参数 在调用时需要给一个值 函数过程和子过程的区别在于函数有返回值 getFine fine表示最后函数的返回值为fine 5 调用过程 程序代码 计算 按钮的 单击 事件输入如下代码 PrivateSubCommand1 Click DimfineAsDoublefine getFine n MsgBox 罚金 CStr fine 元 EndSub说明 n为窗体上文本框名称 表示文本框中输入的值 fine getFine n 表示调用函数getFine 将n传递给getFine 函数的返回值赋值给fine 8 6 3参数形式1 定义函数的定义格式为 Function函数名 参数1 参数2 过程的定义格式为 过程名 参数1 参数2 说明 中的参数为形参 可以包含多个 多个参数之间使用逗号隔开 参数的定义格式主要包含如下 ByVal ByRef 参数名 as类型 表示 中部分为可选项 ByVal 值传递 形参值的变化不影响实参的值 ByRef 地址传递 默认选项 形参值的变化影响实参的值 2 调用 过程调用 Call过程名 实参1 实参2 函数调用 变量 函数名 实参1 实参2 比如 Callp 1 2 1和2均为实参Callp x y x和y均为实参 例8 12 不同参数的传递在窗体上有一个命令按钮command1 编写如下代码Privatesubcommand1 click Dimxasinteger yasintegerX 1Y 2Callp x y MsgboxxMsgboxyEndsub Publicsubp nasinteger ByValmasinteger n 3m 4Endsub结果 单击命令按钮两个消息框的内容分别为 3和2分析 p nasinteger ByValmasinteger 中nasinteger的传递方式为默认值即为ByRef m为值传递 Callp x y 中第一个参数是地址传递 x将地址传递给n 即x和n指向同一地址 在p过程中n的值发生了变化 x的值自然随n的变化 Callp x y 中第二个参数是值传递 将y的值赋值给m y和m存放在不同的内存区域 在过程p中m的变化不会影响到y 程序的调试与出错处理 程序错误类型编译错误一般是语法上的错误 如if没有对应的endif sub没有对应的endsub 将引号写成中文的引号 调用函数时 参数不对应等 运行错误在运行程序时发生的错误 比如计算3 0 要打开的表不存在等 逻辑错误没有获得预期结果 比如要计算3的平方 而写成的表达式2 3 结果是8 不是需要的结果 出错处理OnErrorGoTo标号如果发生一个运行时错误 则控件会跳到标号处 激活错误处理程序 该标号应该和OnError语句在同一过程中 OnErrorResumeNext忽略错误行 继续执行错误行下一条命令 OnErrorGoTo0不使用错误处理程序 说明 如果不使用OnError语句 则任何运行时错误都是致命的 也就是说 结果会导致显示错误信息并中止运行 VBA程序调试 调试是指在编写程序时 查找并修改错误的过程 图8 19调试工具栏 设置断点设置或取消断点有以下几种方法 单击要设置断点处命令行左边空白区域即断点设置区 再次单击可取消 定位命令行 执行菜单 调试 切换断点 命令 设置或取消断点 定位命令行 执行工具栏 调试 切换断点 命令 设置或取消断点 定位命令行 按下键 F9 设置或取消断点 单步跟踪当运行到某个断点后 选择 调试 逐语句 或按下键 F8 就可以使程序运行到下一行 这样逐步检查程序的运行情况 直至找到问题所在 设置监视点 案例 例8 14 使用调试工具调试 例8 8 功能说明 单步调试每条语句 并监视运行过程中各变量的变化 设置 例8 8 中Fori 1ToInt money 4 为断点 使用单步执行方式逐步运行每条语句 步骤 打开 例8 8 窗体 求1到n整数的和 进入 command1 命令按钮的 单击事件 过程 进入VBE界面 设置断点 单击命令行 Fori 1ToInt money 4 前断点设置区域 即图8 28中椭圆点所在灰色区域 设置此处为断点 运行程序 运行窗体 买鸡问题计算 输入一个值 单击 计算 按钮 程序进入调试界面如图8 20 暂停在 Fori 1ToInt money 4 命令行上 单语句调试 继续按 F8 或执行菜单 调试 逐语句 进行逐语句调试 程序运行到到下一条语句上如图8 28中黄色低纹程序代码处处 添加监视窗口 选定要监视的变量 然后单击鼠标右键 执行弹出菜单 添加监视 命令 或执行菜单 调试 添加监视 命令 会显示监视窗口 同时在监视窗口中该变量或表达式的状态 打开本地窗口可以监视当前过程中所有变量的状态 立即窗口需要用户输入 表达式 才能显示当前运行到此处时 该表达式的值 8 8使用VBA访问数据库 在VBA程序中也能访问数据库 能更加有效 快捷的管理数据 在VBA程序中访问数据库接口主要包含三种 1 开放数据库编程接口ODBCAPI 2 数据库访问对象DAO DataAccessObject 3 Active数据对象ADO ActiveXDataObjects 8 8 1数据访问对象DAO的模型结构 图8 29DAO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应征公民入伍通知书
- 廉江货车停运通知书
- 延安放烟花通知书
- 建章路社区封控通知书
- 建设路限电情况通知书
- 开发商邮寄交房通知书
- 张家口学院离校通知书
- 张洼新村停电通知书
- 徐闻县停课补课通知书
- 2023年马鞍山辅警招聘考试真题含答案详解(研优卷)
- 国家开放大学《现代教育管理专题》平时作业1-5参考答案
- 动火证施工现场动火证申请书
- 【管理会计师专业能力中级考试案例】
- 呼麦专题知识
- 中考语文非连续性文本阅读10篇专项练习及答案
- 新闻学概论5:新闻与信息、宣传、舆论
- DB31-T 1343-2022 医用超声探头消毒卫生要求
- 24、小数加减法整理和复习课件苏教版五上数学
- 04-电缆绝缘电阻测试记录表
- 货代新手培训材料
- 《罗织经》全文及翻译
评论
0/150
提交评论