《第8章VBA程序设计.ppt》由会员分享,可在线阅读,更多相关《第8章VBA程序设计.ppt(25页珍藏版)》请在三一文库上搜索。
1、第8章 VBA程序设计,2,VBA,VBA(Visual Basic Applications)是Microsoft公司Office系列软件中内置的用来开发应用系统的编程语言。 VBA和宏都可以实现Access操作的自动化。宏本身是一种控制方式简单的程序,它由Access提供的命令实现;而VBA程序则需要用户自行编写。,3,8.1 基 本 概 念,1、程序:计算机程序(通常简称程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写。 2、模块就是存储在一个单元中的命令和过程的集合。模块是基于VB程序设计语言而创建的。,4,模块由过程组成,每一个过程都由一个函数或一个子程序所组成。
2、 过程(Procedure):是由VB代码组成的。包含一系列执行操作或计算数值的语句和调用对象方法的语句。,5,子程序,子程序:也称为Sub过程。是执行一项操作或一系列操作的过程。 子程序以关键字“Sub”开始,并以“End Sub”语句结束。 语句格式: Sub ( ) End Sub,6,一个简单的Sub过程,【例1】 创建一个Sub过程,自动弹出一个系统信息框,并打开“文物查询系统”。 Private Sub Command0_Click() MsgBox (“欢迎进入广州博物馆!“) DoCmd.openform“文物管理封面“ End Sub,Sub结尾,Sub开头,7,事件驱动:
3、与宏一样,我们可以在窗体或报表的“事件”中编制事件驱动程序,当事件发生时,模块中相应的过程自动执行。,8,一、常用的VBA命令,变量声明 打开操作 关闭操作 输出操作,9,1、变量声明: 在引用变量之前应首先定义变量的数据类型。,语句格式: Dim As 例: Dim a As string Dim x,y As Integer (若不声明变量类型,该变量可存放任意类型的数据) 例: Dim a, name a=5 name=“王康”,a字符型变量,X,y为整型变量,给变量赋值的语句,10,2、打开操作,打开窗体命令格式如下: DoCmd.OpenForm formname 打开报表命令: D
4、oCmd.OpenReport Reportname 例:打开“教师信息”窗体。 DoCmd.OpenForm ”教师信息”,11,3、关闭操作,其命令格式如下: DoCmd.Close objecttype,objectname 例:关闭“成绩统计”报表。 DoCmd.Close acReport “成绩统计”,12,4、输出操作,消息框 (MsgBox 函数) 其命令格式如下: MsgBox(信息内容,对话框类型+图标类型,对话框标题) 例:MsgBox(“输入密码错!“, 5 + 48, “验证密码“),MsgBox使用说明,13,14,5、记录操作,第一个: DoCmd.GoToRec
5、ord , , acFirst 下一个: DoCmd.GoToRecord , , acNext 上一个: DoCmd.GoToRecord , , acPrevious 最后一个: DoCmd.GoToRecord , , acLast,15,8.2 VBA的基本程序结构,结构化程序设计方法有三种基本的程序控制结构: 顺序结构 分支(选择)结构 循环结构。,16,1、顺序结构:,功能:语句由上至下顺序执行。,例: Private Sub Command0_Click() MsgBox (“欢迎进入文物查询系统!“) DoCmd.OpenForm “文物管理封面“ End Sub,17,2、分
6、支(选择)结构,VBA提供了如下两种常用的选择语句 If 语句 -分支结构 Case语句-多分支结构,18,IF 条件语句,语句格式: IF Then Else End IF,功能:若满足条件执行THEN后面,否则执行Else后的,19,【实例2】验证密码,设计一个验证密码窗体,单击“确定”时,使用过程验证密码正确与否; 如果错误,提示“密码错误,请重新输入!”,单击“重试”按钮时,将密码清空,焦点落在文本框; 若输入正确,打开“学籍管理系统“,并关闭当前(验证密码)窗体。,20,事件驱动程序代码,Private Sub 确定_Click() Dim a IF Forms!验证密码!Text1
7、 = “123456“ Then DoCmd.Close DoCmd.OpenForm “文物管理封面“ Else a = MsgBox(“密码错误,请重新输入!“, 5 + 48 + 0, “验证“) IF a 4 Then Quit Else Text1 = “ Text1.SetFocus End If End If End Sub,21,【实例2】若登录时需要用户名和密码的情况,22,Dim a Text1.SetFocus IF Forms!登录!Text1 = “admin“ And Forms!登录!Text2 = “123456“ Then DoCmd.Close DoCmd.
8、OpenForm “文物管理封面“ Else a = MsgBox(“密码错误,请重新输入!“, 5 + 48 + 0, “验证“) IF a 4 Then Quit Else Text1 = “ Text2 = “ Text1.SetFocus End If End If,密码,用户名,23,24,IF条件的应用举例,条件查询 例:文物信息管理系统中按文物类别、年代查询。,25,Private Sub Command14_Click() Dim strW As String 定义条件字符串变量strW 存放条件 strW = “ 设变量初始值为空字符串 Me.Combo0.SetFocus
9、焦点放在combo0上 IF Not IsNull(Me.Combo0) Then 判断【类别】条件是否有输入的值 strW = strW & “(分类.名称 like “ & Me.Combo0 & “) AND “ 有输入值 End IF IF Not IsNull(Me.Combo2) Then 判断【年代】条件是否有输入的值 strW = strW & “(年代 like “ & Me.Combo2 & “) AND “ 有输入值 End IF IF Len(strW) 0 Then 有输入条件 strW = Left(strW, Len(strW) - 5) 用LEFT函数截掉这“ and “这5个字符 Else MsgBox “请选择查询条件!“, , “提示 End IF Me.Filter = strW 在窗体中显示查询结果 Me.FilterOn = True IF Me.Recordset.RecordCount = 0 Then 用统计查询到满足条件的记录数来判断无符合条件的信息 MsgBox “暂无符合条件的信息!“, , “提示“ End IF End Sub,
链接地址:https://www.31doc.com/p-2552580.html