版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、7.1 “超级货架”什么是VBA VBA(Visual Basic for Application)是Microsoft Office系列的内置编程语言,其功能十分强大。在Access 2007中,VBA的功能是通过模块来实现的。事实上,在Access 2007中,程序设计的核心工作就是编写模块和事件过程。 如下图所示为Access 2007中VBA程序的编写界面。 打开此窗口的方法为在“创建”选项卡中单击“宏”下拉按钮,在打开的列表中选择“模块”项功能模块的事件过程(不同的功能模块,具有不同的事件过程,实际上这里就是所谓的程序源代码) 功能模块属性窗格7.2 “内部结构”VBA程序的基本语法
2、与书写格式 7.2.1 变量和常量 在任何编程语言中,都要用到变量和常量,它们都是用来存储数据的。变量存储的是经常需要变动的数据,常量储存的是不用改变的数据(或对象)。 1变量 变量在引用之前必须被声明,声明一个变量就是事先将变量的有关信息告诉程序,声明变量要使用Dim语句,其语法格式为: Dim Str1 As String 声明一个名为Str1的字符串变量Str1=Hello 给变量赋值Str1=Goodbye 改变变量的值Dim 变量名As 类型以上语句中的“As 类型”子句是可选的。如果选择了该子句,就可以定义变量的数据类型或对象类型。例如以下语句:2常量 在VBA中,声明常量的语法格
3、式为: Const 常量名 As 类型表达式在这个表达式中,“常量名”的命名规则同变量一样,语句中的“表达式”是由数值常量和字符串常量以及运算符组成的。例如: Public Const PI=3.1415926声明一个在整个程序中都能使用的常量PI 7.2.2 流程控制语句 程序员最基本和最重要的工作就是告诉计算机何时要做出什么样的动作。就像一个交通警察指挥大量的车辆和行人何时该走、何时该停、该向哪边走一样。 本节主要介绍If语句、Select Case语句、Do.Loop语句、For.Next语句、GoTo 语句以及With语句等流程控制语句,下面我们分开详细介绍。 1If 语句 If语句是
4、我们最常用的一种分支语句。它符合人们通常的语言习惯和思维习惯。比如if(如果)绿灯亮是真,then(那么)车就可以通行,else(否则)车辆要等待行人通过。 If语句有三种语法形式。 1)最简单的形式if then 2)带有else的形式if thenelseend ifif thenelseif thenelse end if3)带有多重条件的形式2Select Case语句 根据表达式的值,来决定执行多组语句中的哪一组,这就是Select Case语句。它的语法如下: Select Case 表达式 Case 表达式列表1 语句陈述1 Case 表达式列表2 语句陈述2. . Case 表
5、达式列表n 语句陈述nEnd 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 Select在此例子中,Case语句按照先后顺序进行比较,首先执行与第一
6、个Case条件相匹配的代码,若不存在匹配的条件,则执行Case Else语句,然后程序将执行End Select语句后面的代码。 3DoLoop语句 用Do.Loop语句可以定义要多次执行的语句块。我们也可以定义一个条件,当这个条件为假时,就结束这个循环。Do.Loop语句有以下两种形式。 第1种:DoWhile|UntilExit Do Loop第2种:Do Exit Do LoopWhile|Until 上面格式中,是用来检查真(非零)或假(零或Null)的一个比较谓词或表达式。While子句和Until子句的作用正好相反。 如果指定了一个While子句,则当是真,就继续执行。如果指定了U
7、ntil子句,则当为真时,循环执行结束。 4ForNext语句 按照指定次数来重复执行同一组语句,这就是For.Next 语句。 在事先不知道循环需要执行多少次时,应该使用Do循环。而事先知道要执行多少次时,最好使用For.Next语句。 ForNext语句的语法格式为: For 循环控制变量=初值 To 终值 Step 步长 循环语句Next其中,“Step 步长”可以省略,省略时步长为1。循环控制变量可以为整型、长整型、实型以及字符串;但最常用的还是整型和长整型。 在循环中可以通过Exit For跳出循环体,下面的例子说明了ForNext语句的使用方法: For i=1 To 100 St
8、ep 2 Score=Score+10Next上边语句的意义是:将初值赋予循环控制变量,即循环控制变量的值从1开始,在执行完一次循环体后,将循环控制变量加上步长2,当i的值大于100时,跳出循环。是一个逻辑表达式,if语句通过检查的真或假来进行语句判断。 比如,若为True(真),则执行紧接在关键字Then后面的一条或多条语句。 若为False(假),则无论接下来是什么语句,程序都检查下一个Else或执行Else关键字后面的语句。 6With语句 在引用对象的时候,我们通常会感到冗长的对象限定,繁琐而又累赘。如果你喜欢简单,那么用With可以简化代码中对复杂对象的引用。 可以用With语句建立
9、一个“基本”对象,然后用一个速记符号来引用这个对象上的对象、集合、属性或方法。 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 WithEnd Sub上面列出的代码就是一个简单的过程。实际上在With下的所有操作,默认访问的都是cmdSmallFont对象通常用Sub声明一个新的过程,其语法格式如下: Private|Public|FriendStaticSub name(arglist)statementsEnd Sub各项的意义请参考书中表格7-1。 2函数 函数其实也是过程,不过它是一种特殊的、能够返回具体值的过程,返回的值通常是计算的结果或
11、测试的结果,能够在表达式中使用。用Function语句可以声明一个新函数。其语法形式如下: Public | Private | FriendStatic Function name (arglist) As type statements name=expression Exit FunctionEnd Function各项的意义请参考书中表格7-2 7.2.4 注释语句 注释语句就是穿插在程序代码中并对代码的意义和功能进行说明的语句,它不参与程序的运行。 在VBA程序中,添加注释可以通过两种方式来实现:一是使用Rem语句,二是使用“”符号。 Dim Mystr1,Mystr2Mystr1=
12、”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打开“计件工资管理系统”数据库,打开新建“窗体”的设计视图 单击组合框按钮,将鼠标光标移动到要添加组合框的位置单击鼠标左键,添加一个组合框23将组合框的标签修改为“请选择要打开的表格”。然后双击组合框,打开组合框的“属性”窗口单击“数据”标签,在“行来源类型”下拉列表中选择“值列表”项在“行来源”中输入几个已经创建好的窗体的名称:“人事表”;“加班表”;“请假表”
15、456在组合框的下面添加两个命令按钮,并更名为“打开”和“关闭”选中“打开”按钮,然后单击代码按钮,打开该窗体的代码编辑窗口 79在事件列表中选择“Click”项 在对象选择下拉列表中选择“Command2”项 为“打开”按钮的单击事件输入代码 81012在事件列表中选择“Click”项 在对象选择下拉列表中选择“Command3”项 为“关闭”按钮的单击事件输入代码 111315在对象列表中选择“Form”,在事件过程列表中选择“Load”事件 为Load事件输入代码 1416双击打开“密码窗体”,将首先弹出要求输入密码的窗口,输入密码,单击“确定”按钮单击组合框的下拉按钮,从下拉列表中选择
16、一个窗体名称(这里选择“人事表”)后,单击“打开”按钮即可打开相应的表格了 17 7.3.3 创建查询窗体模块 1打开“计件工资管理系统”数据库,打开新建窗体的“设计视图” 2创建一个命令按钮,将其标题更改为“查询” 添加一个文本框,将其标签的标题更改为“请输入员工编号:”重复相同的操作创建另外一个标签为“返回的员工姓名:”的文本框 34创建一个函数Search,编写如下代码 在对象列表中选择“Command4”,在事件过程列表中选择“Click”事件,为“查询”按钮(Command4)的单击(Click)事件编写“Text2.Value = Search(Text0.Value, ”Prim
17、aryKey“, ”人事表“)”代码56通过以上步骤我们就完成了函数的创建和调用,双击打开“查询员工姓名”窗体,执行的效果如图所示 7.3.4 边学边练:使用VBA增加“计件工资管理系统”的功能我们这里主要需要添加在“系统设置”窗口实现“人事调整”功能的代码。“工资录入和查询”、“加班录入和查询”和“请假录入和查询” 在这三个窗体中都需要添加代码来实现各自的功能。 需要在“本月工资统计”和“上月工资统计”报表中添加代码实现动态打印报表。 1、给“系统设置”窗体添加代码 这是“系统设置”窗体的操作界面 我们首先需要实现的功能是:在下拉标签中进行选择时,员工编号列表框和右侧的“员工列表”同时跟着改
18、变 2添加当单击“打印个人档案”按钮时应执行的操作添加当选择下拉列表时,应执行的操作 添加当选择列表项时,应执行的操作 135添加错误提示窗口设置代码 添加用于自动添加班组操作的代码 添加“同步更新操作” 函数,完成代码的添加 46调用更新过程72、给“录入和查询”窗体添加代码 在此窗体我们主要应实现,当输入或选择了员工编号后,在姓名栏中自动显示出此人的姓名,然后当选择用户或添加记录时,应在下边员工列表中显示其当天的工作记录,以及合计的工资数 1另外需要定义两个函数“chaxun”和“chaxun2” (至于代码请到书中查询),并在此处进行调用,然后保存就可以了对“件数”文本框的限制操作,即让
19、其只能输入数字 23、给“工资统计和打印”报表添加代码 打开“本月工资统计”的设计视图,添加三个标签控件,分别位于“报表页眉”、“页面页眉”和“主体”节,其中位于“报表页面”的节我们将会在代码中动态更新其内容,所也我们这里将其命名为“月”在“主体”节中,添加一个文本框“工资合计”,此文本框用于显示最后的工资统计记录 21这是窗体的最终执行效果,关于报表代码,由于代码较多,我们这里不再列举,请大家到正文中查询和分析7.4 “兢兢业业”VBA程序的调试 1、调试工具栏及功能 简单地讲,“调试”就是查找错误并对错误进行排除的过程。以下我们从调试工具栏及功能、设置断点、跟踪和设置监视点等方面对VBA程序调试进行介绍。 当您对程序进行调试时,可以使用VBA的“调试”工具栏,它提供了一些非常实用的工具。打开“调试”工具栏的方法为: 选择【视图】【工具栏】【调试】命令,即可调出“调试”工具栏工具栏中各按钮的功能可在正文中查询2、设置断点直接在要设置断点的位置单击左边的断点设定区,如图所示。当您再次单击该处时,断点的设定将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同变更内容补充协议
- 合同内暂停薪资协议
- 上门搬家服务合同履行要点
- 波纹管供应商合同案例
- 2024年度广告发布合同:广告公司与广告主之间的广告发布协议3篇
- 购销协议书补充协议格式
- 教育营销服务合同
- 项目采购合同的物流管理
- 防水原料采购协议
- 展会服务定制合同
- 石材供货计划措施
- 2024年江苏省扬州市中考道德与法治真题(含解析)
- 2024-2030年中国光学级涂料行业市场发展趋势与前景展望战略分析报告
- 2024年国开电大 高级财务会计 形考任务4答案
- 【良品铺子成本控制中存在的问题及优化建议探析(定量论文)11000字】
- DB11∕T 1580-2018 生产经营单位安全生产应急资源调查规范
- 2024年浙江省气象部门招聘应届毕业生63人历年(高频重点复习提升训练)共500题附带答案详解
- 人教版八年级数学上册14.1.3《积的乘方》说课稿
- 茅台酒销售合作协议
- 人教版五年级上册小数除法竖式计算练习200道及答案
- 5国家机构有哪些 第二课时(教学设计)部编版道德与法治六年级上册
评论
0/150
提交评论