版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 学习使用VBA,“超级货架”什么是VBA “内部结构”VBA程序的基本语法与书写格式 “增加内涵”功能模块的创建 “兢兢业业” VBA程序的调试 典型实例:给“考勤管理系统”添加功能代码,7.1 “超级货架”什么是VBA,VBA(Visual Basic for Application)是Microsoft Office系列的内置编程语言,其功能十分强大。,在Access 2007中,VBA的功能是通过模块来实现的。事实上,在Access 2007中,程序设计的核心工作就是编写模块和事件过程。,如下图所示为Access 2007中VBA程序的编写界面。,功能模块,属性窗格,7.2 “内
2、部结构”VBA程序的基本语法与书写格式,7.2.1 变量和常量,在任何编程语言中,都要用到变量和常量,它们都是用来存储数据的。变量存储的是经常需要变动的数据,常量储存的是不用改变的数据(或对象)。,1变量,变量在引用之前必须被声明,声明一个变量就是事先将变量的有关信息告诉程序,声明变量要使用Dim语句,其语法格式为:,Dim Str1 As String 声明一个名为Str1的字符串变量 Str1=Hello 给变量赋值 Str1=Goodbye 改变变量的值,Dim 变量名As 类型,以上语句中的“As 类型”子句是可选的。如果选择了该子句,就可以定义变量的数据类型或对象类型。例如以下语句:
3、,2常量,在VBA中,声明常量的语法格式为:,Const 常量名 As 类型表达式,在这个表达式中,“常量名”的命名规则同变量一样,语句中的“表达式”是由数值常量和字符串常量以及运算符组成的。例如:,Public Const PI=3.1415926 声明一个在整个程序中都能使用的常量PI,7.2.2 流程控制语句,程序员最基本和最重要的工作就是告诉计算机何时要做出什么样的动作。就像一个交通警察指挥大量的车辆和行人何时该走、何时该停、该向哪边走一样。,本节主要介绍If语句、Select Case语句、Do.Loop语句、For.Next语句、GoTo 语句以及With语句等流程控制语句,下面我
4、们分开详细介绍。,1If 语句,If语句是我们最常用的一种分支语句。它符合人们通常的语言习惯和思维习惯。比如if(如果)绿灯亮是真,then(那么)车就可以通行,else(否则)车辆要等待行人通过。,If语句有三种语法形式。,1)最简单的形式,if then ,2)带有else的形式,if then else end if,if then elseif then else end if,3)带有多重条件的形式,2Select Case语句,根据表达式的值,来决定执行多组语句中的哪一组,这就是Select Case语句。它的语法如下:,Select Case 表达式 Case 表达式列表1 语句
5、陈述1 Case 表达式列表2 语句陈述2. . Case 表达式列表n 语句陈述n End Select,下面的实例可以使我们进一步了解Select Case语句的用法。,Dim Score As Integer Select Case Score Case Is = 90 MsgBox You got an A on the test. Case 80 To 89 MsgBox You got a B on the test. Case 60 To 79 MsgBox You got a C on the test. Case Else MsgBox You failed. End Sel
6、ect,在此例子中,Case语句按照先后顺序进行比较,首先执行与第一个Case条件相匹配的代码,若不存在匹配的条件,则执行Case Else语句,然后程序将执行End Select语句后面的代码。,3DoLoop语句,用Do.Loop语句可以定义要多次执行的语句块。我们也可以定义一个条件,当这个条件为假时,就结束这个循环。Do.Loop语句有以下两种形式。,第1种: DoWhile|Until Exit Do Loop,第2种: Do Exit Do LoopWhile|Until,上面格式中,是用来检查真(非零)或假(零或Null)的一个比较谓词或表达式。While子句和Until子句的作用
7、正好相反。,如果指定了一个While子句,则当是真,就继续执行。如果指定了Until子句,则当为真时,循环执行结束。,4ForNext语句,按照指定次数来重复执行同一组语句,这就是For.Next 语句。,在事先不知道循环需要执行多少次时,应该使用Do循环。而事先知道要执行多少次时,最好使用For.Next语句。,ForNext语句的语法格式为:,For 循环控制变量=初值 To 终值 Step 步长 循环语句 Next,其中,“Step 步长”可以省略,省略时步长为1。循环控制变量可以为整型、长整型、实型以及字符串;但最常用的还是整型和长整型。,在循环中可以通过Exit For跳出循环体,下
8、面的例子说明了ForNext语句的使用方法:,For i=1 To 100 Step 2 Score=Score+10 Next,上边语句的意义是:将初值赋予循环控制变量,即循环控制变量的值从1开始,在执行完一次循环体后,将循环控制变量加上步长2,当i的值大于100时,跳出循环。,是一个逻辑表达式,if语句通过检查的真或假来进行语句判断。,比如,若为True(真),则执行紧接在关键字Then后面的一条或多条语句。,若为False(假),则无论接下来是什么语句,程序都检查下一个Else或执行Else关键字后面的语句。,6With语句,在引用对象的时候,我们通常会感到冗长的对象限定,繁琐而又累赘。
9、如果你喜欢简单,那么用With可以简化代码中对复杂对象的引用。,可以用With语句建立一个“基本”对象,然后用一个速记符号来引用这个对象上的对象、集合、属性或方法。,With End With,例如,下面的代码来自一个Access窗体,它设置了一个组件框控件的“可见性”属性,并调用了该组件框的两个方法。,With Me!cboAuthorSearchList .Visible=True设置为可见 .Dropdown点击下拉菜单 End With,7.2.3 过程与函数,简单地讲,过程和函数就是指能够执行特定功能的语句块,都是为编写程序而服务的。但是它们之间是有区别的。,1过程,过程是VBA代码
10、的一个单元,它包括一系列用于执行某个任务或是进行某种计算的语句。,过程只执行一个或多个操作,没有返回值。比如下面就是一个过程的例子。,Sub cmdSmallFont_Click() With Selection.Font .Name=Arial .Size=16 End With End Sub,上面列出的代码就是一个简单的过程。实际上在With下的所有操作,默认访问的都是cmdSmallFont对象,通常用Sub声明一个新的过程,其语法格式如下:,Private|Public|FriendStaticSub name(arglist) statements End Sub,各项的意义请参考
11、书中表格7-1。,2函数,函数其实也是过程,不过它是一种特殊的、能够返回具体值的过程,返回的值通常是计算的结果或测试的结果,能够在表达式中使用。,用Function语句可以声明一个新函数。其语法形式如下:,Public | Private | FriendStatic Function name (arglist) As type statements name=expression Exit Function End Function,各项的意义请参考书中表格7-2,7.2.4 注释语句,注释语句就是穿插在程序代码中并对代码的意义和功能进行说明的语句,它不参与程序的运行。,在VBA程序中,添
12、加注释可以通过两种方式来实现:一是使用Rem语句,二是使用“”符号。,Dim Mystr1,Mystr2 Mystr1=”Welcome” :Rem为Mystr1赋值。 Mystr2=”Goodbye” 为Mystr2赋值。这也是一条注释,无需使用冒号。,“Rem注释”在语句之后要用冒号隔开。,7.2.5 语句的连写和换行,Dim MyNO As String MyNo=“2002091229” 可以写成下面的一行: Dim MyNo As String:MyNo=“2002091229”,一般而言,程序语句都是一句一行,但是有些时候可能需要在一行中连写几句代码。这时需要用冒号“:”来分开这些
13、不同用途的语句。例如:,另外,还有一种情况在编程中经常遇到,那就是程序代码过长,虽然一行能够写完。但是书写起来不方便,看上去也不美观,希望将这句代码分开写成几行。,这时要用到空格加下划线“ _”,比如下面的例子。,Public Const Date=#1/1/2000#,Author=Nancy, _ Tel=62774059,空格加下划线(“ _”)被称为续行号,它可以把语句分成两行或多行,用于解决程序代码中语句过长的问题。,7.3 “增加内涵”功能模块的创建,7.3.1 模块简介,模块作为Access数据库中的一个重要对象,它是将VBA声明、表达式和程序作为一个单元进行保存的集合。,模块由
14、一个通用声明部分以及一个或多个子程序或函数组成的。模块的通用声明部分用来对要在模块中或模块之间使用的变量、常量、自定义数据类型以及模块级的Option语句进行声明。其它部分为子程序或函数部分,具体如下图所示。,7.3.2 创建具有密码验证的主窗体模块,1,打开“计件工资管理系统”数据库,打开新建“窗体”的设计视图,单击组合框按钮,将鼠标光标移动到要添加组合框的位置单击鼠标左键,添加一个组合框,2,3,将组合框的标签修改为“请选择要打开的表格”。然后双击组合框,打开组合框的“属性”窗口,单击“数据”标签,在“行来源类型”下拉列表中选择“值列表”项,在“行来源”中输入几个已经创建好的窗体的名称:“
15、人事表”;“加班表”;“请假表”,4,5,6,在组合框的下面添加两个命令按钮,并更名为“打开”和“关闭”,选中“打开”按钮,然后单击代码按钮,打开该窗体的代码编辑窗口,7,9,在事件列表中选择“Click”项,在对象选择下拉列表中选择“Command2”项,为“打开”按钮的单击事件输入代码,8,10,12,在事件列表中选择“Click”项,在对象选择下拉列表中选择“Command3”项,为“关闭”按钮的单击事件输入代码,11,13,15,在对象列表中选择“Form”,在事件过程列表中选择“Load”事件,为Load事件输入代码,14,16,双击打开“密码窗体”,将首先弹出要求输入密码的窗口,输
16、入密码,单击“确定”按钮,单击组合框的下拉按钮,从下拉列表中选择一个窗体名称(这里选择“人事表”)后,单击“打开”按钮即可打开相应的表格了,17,7.3.3 创建查询窗体模块,1,打开“计件工资管理系统”数据库,打开新建窗体的“设计视图”,2,创建一个命令按钮,将其标题更改为“查询”,添加一个文本框,将其标签的标题更改为“请输入员工编号:”,重复相同的操作创建另外一个标签为“返回的员工姓名:”的文本框,3,4,创建一个函数Search,编写如下代码,在对象列表中选择“Command4”,在事件过程列表中选择“Click”事件,为“查询”按钮(Command4)的单击(Click)事件编写“Te
17、xt2.Value = Search(Text0.Value, ”PrimaryKey“, ”人事表“)”代码,5,6,通过以上步骤我们就完成了函数的创建和调用,双击打开“查询员工姓名”窗体,执行的效果如图所示,7.3.4 边学边练:使用VBA增加“计件工资管理系统”的功能,我们这里主要需要添加在“系统设置”窗口实现“人事调整”功能的代码。,“工资录入和查询”、“加班录入和查询”和“请假录入和查询” 在这三个窗体中都需要添加代码来实现各自的功能。,需要在“本月工资统计”和“上月工资统计”报表中添加代码实现动态打印报表。,1、给“系统设置”窗体添加代码,这是“系统设置”窗体的操作界面,我们首先需
18、要实现的功能是:在下拉标签中进行选择时,员工编号列表框和右侧的“员工列表”同时跟着改变,2,添加当单击“打印个人档案”按钮时应执行的操作,添加当选择下拉列表时,应执行的操作,添加当选择列表项时,应执行的操作,1,3,5,添加错误提示窗口设置代码,添加用于自动添加班组操作的代码,添加“同步更新操作” 函数,完成代码的添加,4,6,调用更新过程,7,2、给“录入和查询”窗体添加代码,在此窗体我们主要应实现,当输入或选择了员工编号后,在姓名栏中自动显示出此人的姓名,然后当选择用户或添加记录时,应在下边员工列表中显示其当天的工作记录,以及合计的工资数,1,另外需要定义两个函数“chaxun”和“cha
19、xun2” (至于代码请到书中查询),并在此处进行调用,然后保存就可以了,对“件数”文本框的限制操作,即让其只能输入数字,2,3、给“工资统计和打印”报表添加代码,打开“本月工资统计”的设计视图,添加三个标签控件,分别位于“报表页眉”、“页面页眉”和“主体”节,其中位于“报表页面”的节我们将会在代码中动态更新其内容,所也我们这里将其命名为“月”,在“主体”节中,添加一个文本框“工资合计”,此文本框用于显示最后的工资统计记录,2,1,这是窗体的最终执行效果,关于报表代码,由于代码较多,我们这里不再列举,请大家到正文中查询和分析,7.4 “兢兢业业”VBA程序的调试,1、调试工具栏及功能,简单地讲,“调试”就是查找错误并对错误进行排除的过程。以下我们从调试工具栏及功能、设置断点、跟踪和设置监视点等方面对VBA程序调试进行介绍。,当您对程序进行调试时,可以使用VBA的“调试”工具栏,它提供了一些非常实用的工具。打开“调试”工具栏的方法为:,选择【视图】【工具栏】【调试】命令,即可调出“调试”工具栏,工具栏中各按钮的功能可在正文中查询,2、设置断点,直接在要设置断点的位置单击左边的断点设定区,如图所示。当您再次单击该处时,断点的设定将被取消,也可以将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全生产数字化转型责任制实施细则
- 砌块勾缝施工工艺
- 2026年安全生产应知应会考试题道知识点带答案
- 贯彻落实企业全员岗位安全生产责任制的实施方案
- Python程序设计-从基础开发到数据分析(第2版)-微课版 课件全套 夏敏捷 第1-17章 Python语言介绍- Python数据分析
- 物流企业驾驶员检修维修安全操作规程
- 中外历史纲要(下) 板块4 第13单元 第37讲 第2课时 社会主义国家的发展与变化
- 第一单元测试卷-2025-2026学年语文三年级上册统编版
- 耕作学试题及其答案
- 企业数字化转型对劳动力就业稳定性影响跨国比较研究方法
- 2026广西数字金服科技有限公司招聘6人笔试模拟试题及答案详解
- 2026年江苏省苏州市《保安员证》考试题库含答案(完整)
- 2025年MLED直显产业白皮书(节选)
- 公立医院行政管理岗招聘考试核心考点笔记:医疗质量安全核心制度
- 脚手架施工安全技术安全生产模板
- 2026年政府会计考试高频考点解析
- 2026年备考安全员之B证(项目负责人)通关题库(附带答案)
- YY 0017-2026骨接合植入器械金属接骨板
- 肝移植科普讲解
- 混凝土泵车安全作业指导书
- 架空输电线路工作人员岗位技能培训考试题库含答案
评论
0/150
提交评论