当前位置首页 > 医药卫生 > 基础医学
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

第8章模块和VBA程序设计ppt课件

文档格式:PPT| 127 页|大小 1.77MB|积分 10|2023-02-26 发布|文档ID:190203557
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 127
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 2023-2-261第8章 模块和VBA程序设计本章要求:本章要求:1 1、了解、了解VBAVBA编程环境;编程环境;2 2、掌握、掌握VBAVBA编程根底:常量,变量,表达式;编程根底:常量,变量,表达式;3 3、掌握顺序控制,选择控制,循环控制、掌握顺序控制,选择控制,循环控制 4 4、了解、了解VBAVBA模块模块本章要点:本章要点:掌握顺序控制,选择控制,循环控制掌握顺序控制,选择控制,循环控制学时安排:学时安排:6 6学时学时(实际实际+6+6学时学时(实际实际第第8章章 模块和模块和VBA程序设计程序设计第第8章章 模块和模块和VBA程序设计程序设计 VBA程序设计根底 模块的概念 常用规范函数 VBA的程序构造 VBA的数据库编程 过程调用和参数传送 在Access系统中,把宏、窗体和报表等对象结合起来,不用编写程序代码就可以建立功能较完善的数据库管理系统但宏的功能是有局限性的,它只能处置一些简单的操作,假设要实现功能强大的数据管理,以及灵敏的控制功能,宏对象就无能为力了这时,就需求编写程序模块来实现上述的功能本章引见模块的概念和用来建立模块的VBA言语的根底知识第第8章章 模块和模块和VBA程序设计程序设计8.1 模块的概念模块的概念 模块对象是Access系统中所包含的7种对象之一,模块和宏的运用有一些类似之处。

    宏是由系统自动生成的程序模块,而模块对象是用VBA言语编写的,VBA是Office软件中内置的编程言语,语法与Visual Basic兼容1.模块的分类 在Access中,模块分为类模块和规范模块两种类型1)类模块 类模块包括窗体模块和报表模块,它们与各自的 窗体 或报表相关联窗体模块中的事件过程的代码用于呼应窗体或窗体 上控件的触发事件报表模块中的事件过程的代码用于 呼应报表或报表上控件的触发事件8.1 模块的概念模块的概念 在窗体或报表的设计视图中,可以运用下面方法翻开模块代码的编辑窗口:工具栏上的“代码按钮为窗体或报表创建事件过程时,系统会自动翻开模块代码编辑窗口窗体模块和报表模块的作用范围在其所属窗体或报表内部,并随着窗体或报表的翻开而开场,随着窗体或报表的封锁而终了类模块也可以不依赖窗体或报表而单独存在8.1 模块的概念模块的概念(2)规范模块 规范模块包含与任何其他对象都无关的常规过程,以及可以从数据库任何位置运转的经常运用的过程规范模块和某个特定对象无关的类模块的主要区别在于其范围和生命周期规范模块显示在数据库窗口的“模块对象中,窗体、报表和规范模块也都显示在“对象阅读器对话框中。

    对象阅读器对话框用于显示与当前工程有关和援用对象库中对象、属性、方法和常数的信息 模块由声明区域和过程两部分组成,声明区域用来声明模块运用的变量,过程是模块的组成单元过程分为两种类型:子过程Sub和函数过程Function1子过程 子过程又称为Sub过程,可以执行一系列操作,无前往值定义格式如下:Sub 过程名 程序代码 End Sub 可以援用子过程的称号来调用该子过程在过程名前加上关键字Call,可以显式调用一个子过程8.1 模块的概念模块的概念2模块的组成模块的组成 例:简单的计算例:简单的计算8.1 模块的概念模块的概念恣意两个数的和两个3的和两个1的和并且能调用例例8-1:下面是一个简单的验证密码的:下面是一个简单的验证密码的Sub过程Sub CheckPwd()Dim Pwd As StringPwd=InputBox(“请输入密码!请输入密码!)If Pwd=123456 ThenMsgBox 密码正确,欢迎进入系统!密码正确,欢迎进入系统!ElseMsgBox 密码错误!密码错误!End ifEnd Sub8.1 模块的概念模块的概念2函数过程 函数过程又称为Funtion过程,可以执行一系列操作,有前往值。

    定义格式如下:Function 过程名 程序代码 End Function 调用函数过程时,需求直接援用函数过程的称号,而不能运用Call来调用执行8.1 模块的概念模块的概念例8-2:下面是编写求圆面积的函数过程Function area(r As Single)As Single If r=0 Then MsgBox 圆半径必需是正数!End If area=3.14159*r*rEnd Function8.1 模块的概念模块的概念调用过程调用过程: 在数据库窗口中,单击“宏对象,选择要转换的宏执行“文件菜单中的“另存为命令,翻开“另存为对话框8.1 模块的概念模块的概念 在对话框的“保管类型下拉列表框中,选择“模块列表项,然后单击“确定按钮,屏幕显示“转换宏对话 框3将宏转换为模块将宏转换为模块 VBA是Visual Basic for Application的缩写,是微软Office系列软件的内置编程言语,与Visual Basic具有一样的言语功能在VBA中,程序是由过程组成的,过程由根据VBA规那么书写的指令组成一个程序包括语句、变量、运算符、函数、数据库对象、事件等根本要素。

    在Access程序设计中,当某些操作不能用其他Access对象实现或实现起来很困难时,就可以利用VBA言语编写代码,完成这些复杂义务8.2 VBA程序设计根底程序设计根底8.2.1 面向对象程序设计的根本概念 Access内嵌的VBA编程言语,采用的是目前主流的面向对象编程机制和可视化编程环境,同时也提供了访问数据库和操作数据表中记录的根本方法8.2 VBA程序设计根底程序设计根底1对象和类对象和类 Access中的表、查询、窗体、报表、页、宏和模块等都是数据库的对象,而控件是窗体或报表中的对象每个不同的对象都经过不同的属性相互区分对象的属性按其类别会有所不同,而且同一对象的不同实例属性构成也能够有差别 具有一样属性和方法的对象就组成了类,在窗体或报表设计视图窗口中,工具箱中的每个控件就是一个类,而在窗体或报表中创建的详细控件那么是这个类的对象而属于同一个类的两个对象是经过属性值来区分的Access中的表、查询、窗体、报表、页、宏和模块对象也是类,称为对象类Access数据库窗口左侧显示的就是数据库的对象类,单击某个对象类可以翻开相应对象窗口对象除了属性以外还有方法对象的方法就是对象可以执行的行为。

    8.2 VBA程序设计根底程序设计根底1对象和类对象和类 属性、方法和事件构成了对象的根本要素属性描画了对象的性质,例如,文本框控件对象中的称号、字体的相关属性等援用方式为:对象.属性 例如:Label6.Caption=area(x)方法描画了对象的行为,即在某个对象上执行的一个过程.援用方式为:对象.方法 例如:Text1.SetFocus 事件是由Access定义好的,可以被窗体、报表以及窗体或报表上的控件等对象所识别的动作如单击,失去焦点等.8.2 VBA程序设计根底程序设计根底2属性、方法和事件属性、方法和事件 运用宏对象来设置事件属性为某个事件编写VBA代码过程,完成指定动作,这种代码过程称为事件过程或事件呼应代码对象名称对象名称事件动作事件动作动作说明动作说明窗体OnLoad窗体加载时发生事件窗体加载时发生事件UnLoad窗体卸载时发生事件窗体卸载时发生事件OnOpen窗体打开时发生事件窗体打开时发生事件OnClose窗体关闭时发生事件窗体关闭时发生事件OnClick窗体单击时发生事件窗体单击时发生事件OnDblClick窗体双击时发生事件窗体双击时发生事件OnMouseDown窗体鼠标按下时发生事件窗体鼠标按下时发生事件8.2 VBA程序设计根底程序设计根底 在Access数据库系统里,可以经过以下两种方式来处置窗体、报表或控件的事件呼应。

    OnKeyPress窗体上键盘按键时发生事件窗体上键盘按键时发生事件OnKeyDown窗体上键盘按下键时发生事件窗体上键盘按下键时发生事件报表报表OnOpen报表打开时发生事件报表打开时发生事件OnClose报表关闭时发生事件报表关闭时发生事件命令按命令按钮控件钮控件OnClick按钮单击时发生事件按钮单击时发生事件OnDblClick按钮双击时发生事件按钮双击时发生事件OnEnter按钮获得输入焦点之前发生事件按钮获得输入焦点之前发生事件OnGetFoucs按钮获得输入焦点时发生事件按钮获得输入焦点时发生事件OnMouseDown按钮上鼠标按下时发生事件按钮上鼠标按下时发生事件OnKeyPress按钮上键盘按键时发生事件按钮上键盘按键时发生事件OnKeyDown按钮上键盘按下键时发生事件按钮上键盘按下键时发生事件8.2 VBA程序设计根底程序设计根底标签标签控件控件OnClick标签单击时发生事件标签单击时发生事件OnDblClick标签双击时发生事件标签双击时发生事件OnMouseDown标签上鼠标按下时发生事件标签上鼠标按下时发生事件文本文本框控框控件件BeforeUpdate文本框内容更新前发生事件文本框内容更新前发生事件AfterUpdate文本框内容更新后发生事件文本框内容更新后发生事件OnEnter文本框输入焦点之前发生事件文本框输入焦点之前发生事件OnGetFoucs文本框获得输入焦点时发生事件文本框获得输入焦点时发生事件OnLostFoucs文本框失去输入焦点时发生事件文本框失去输入焦点时发生事件OnChange文本框内容更新时发生事件文本框内容更新时发生事件OnKeyPress文本框内键盘按键时发生事件文本框内键盘按键时发生事件OnMouseDown文本框内鼠标按下键时发生事件文本框内鼠标按下键时发生事件8.2 VBA程序设计根底程序设计根底对象名称对象名称事件动作事件动作动作说明动作说明组合框控件组合框控件BeforeUpdate 组合框内容更新前发生事件组合框内容更新前发生事件AfterUpdate组合框内容更新后发生事件组合框内容更新后发生事件OnEnter组合框获得输入焦点之前发生事组合框获得输入焦点之前发生事件件OnGetFoucs组合框获得输入焦点时发生事件组合框获得输入焦点时发生事件OnLostFoucs组合框失去输入焦点时发生事件组合框失去输入焦点时发生事件OnClick合框单击时发生事件合框单击时发生事件OnDblClick合框双击时发生事件合框双击时发生事件OnKeyPress组合框内键盘按键时发生事件组合框内键盘按键时发生事件8.2 VBA程序设计根底程序设计根底选项组选项组控件控件BeforeUpdate选项组内容更新前发生事件选项组内容更新前发生事件AfterUpdate选项组内容更新后发生事件选项组内容更新后发生事件OnEnter选项组获得输入焦点之前发生事件选项组获得输入焦点之前发生事件OnClick选项组单击时发生事件选项组单击时发生事件OnDblClick选项组双击时发生事件选项组双击时发生事件单选按单选按钮控件钮控件OnKeyPress单选按钮内键盘按键时发生事件单选按钮内键盘按键时发生事件OnGetFoucs单选按钮获得输入焦点时发生事件单选按钮获得输入焦点时发生事件OnLostFoucs单选按钮失去输入焦点时发生事件单选按钮失去输入焦点时发生事件复选框复选框控件控件BeforeUpdate复选框更新前发生事件复选框更新前发生事件8.2 VBA程序设计根底程序设计根底AfterUpdate复选框更新后复选框更新后发生事件发生事件OnEnter复选框获得输复选框获得输入焦点之前发入焦点之前发生事件生事件OnClick复选框单击时复选框单击时发生事件发生事件OnDblClick复选框双击时复选框双击时发生事件发生事件OnGetFoucs复选框获得输复选框获得输入焦点时发生入焦点时发生事件事件8.2 VBA程序设计根底程序设计根底8.2.2 VBE编程环境 VBE是Visual Basic Editor的缩写,是Access提供的一个编程环境。

    VBE窗口主要由规范工具栏、工程窗口、属性窗口和代码窗口4部分组成.8.2 VBA程序设计根底程序设计根底按钮按钮按钮名称按钮名称作用作用Access视图视图切换切换Access数据库窗口数据库窗口插入模块插入模块用于插入新模块用于插入新模块运行子过程用户窗体运行子过程用户窗体运行模块程序运行模块程序中断运行中断运行中断正在运行的程序中断正在运行的程序终止运行重新设计终止运行重新设计结束正在运行的程序,重新进结束正在运行的程序,重新进入模块设计状态入模块设计状态设计模式设计模式设计模式和非设计模式切换设计模式和非设计模式切换工程项目管理器工程项目管理器打开工程项目管理器窗口打开工程项目管理器窗口属性窗体属性窗体打开属性窗体打开属性窗体对象浏览器对象浏览器打开对象浏览器窗口打开对象浏览器窗口8.2 VBA程序设计根底程序设计根底8.2.3 VBA的根本数据类型 VBA支持多种数据类型,还可以运用类型阐明字符来定义数据类型.8.2 VBA程序设计根底程序设计根底1数据类型数据类型 (1)整型 integer类型声明符为“%,表示范围:-32768 +32767例如:8%-21 +5%5(2).长整形 Long 类型声明符为“&,表示范围:-2147483648 +2147483647 例如:32768 -21&(3.单精度数单精度数 Single 类型声明符为“!(E),最多有7位有效数字,表示范围:-3.402823E+38 1038 +3.402823E+38例:-3.4!1.0E+2 (1.0 102)1数据类型数据类型4.双精度数 Double类型声明符为“#(D),最多有15位有效数字,(5).字符型数据 string 字符型数据是用双引号括起来的一串ASCII码字符。

    专门用来存放文字信息的类型声明符为“$,字符串是放在双引号内的假设干个字符,其中长度为0(即不含任何字符)的字符串称为空字符串例:This a book (6).(6).逻辑型逻辑型 Boolean Boolean 逻辑型数据只需真和假两种值,长度固定为逻辑型数据只需真和假两种值,长度固定为1 1个字符1数据类型数据类型(7).(7).日期时间型日期时间型 DateDate 日期时间型日期时间型Date TimeDate Time数据是描画日期和时间的数据是描画日期和时间的数据,长度固定为数据,长度固定为8 8个字符日期时间型数据除包括日期数据的年、月、日外,日期时间型数据除包括日期数据的年、月、日外,还包括时、分、秒以及上午、下午等内容还包括时、分、秒以及上午、下午等内容8).货币型货币型Currency 类型声明符为类型声明符为,货币数据为表示钱款而设置的货币数据为表示钱款而设置的9)变体形变体形Variant 变体形是指一切未定义的变量默许的数据类型,是变体形是指一切未定义的变量默许的数据类型,是一种可变的数据类型,可以表示任何值一种可变的数据类型,可以表示任何值 1数据类型数据类型运用数据类型时,应留意以下问题:1布尔型数据Boolean 布尔型数据只需两个值:True和False,布尔型数据转换为其他类型数据时,True转换为-1,False转换为0。

    其他类型数据转换为布尔型数据时,0转换为False,其他值转换为True2日期型数据Date 任何可以识别的文本方式的日期数据都可以赋给日期变量,日期类型数据必需前后用“#号括住,例如,#20190317#3变体类型数据Variant)变体类型还可以包含Empty、Error、Nothing和Null特殊值VBA中规定,假设没有显式声明或运用符号来定义变量的数据类型,默以为变体类型8.2 VBA程序设计根底程序设计根底1数据类型数据类型 在编程过程中,有时需求将某种类型数据转换成另一种在编程过程中,有时需求将某种类型数据转换成另一种数据类型例如,窗体文本框控件中显示的数值数据为字符数据类型例如,窗体文本框控件中显示的数值数据为字符串型,要想作为数值处置就应进展数据类型转换串型,要想作为数值处置就应进展数据类型转换8.2 VBA程序设计根底程序设计根底8.2.3 VBA的根本数据类型的根本数据类型2数据类型之间的转换数据类型之间的转换数据库中对象,如数据库、表、查询、窗体和报表等,也有对应的VBA对象数据类型,这些对象数据类型由援用的对象库所定义8.2 VBA程序设计根底程序设计根底3对象数据类型对象数据类型8.2.3 VBA的根本数据类型的根本数据类型 用户定义数据类型可以在TypeEndType关键字间定义,定义格式如下:Type 数据类型名 As As EndType8.2 VBA程序设计根底程序设计根底4用户定义的数据类型用户定义的数据类型8.2.3 VBA的根本数据类型的根本数据类型例8-3:定义一个学生信息数据类型。

    Type NewStudentStuNo As String*8 StuName As String StuSex As String*1 StuAge As Integer EndType8.2 VBA程序设计根底程序设计根底例8-4:定义一个学生信息类型变量NewStudDim NewStud As NewStudentNewStud.StuNo=“07010101NewStud.StuName=“柳志杰NewStud.StuSex=“女NewStud.StuAge=208.2 VBA程序设计根底程序设计根底可以用关键字With简化程序中反复的部分例如,为上面NewStud变量的赋值语句可以修正为如下方式:With NewStud .StuNo=“07010101 .StuName=“柳志杰 .StuSex=“女 .StuAge=20EndWith8.2 VBA程序设计根底程序设计根底常量是指在程序运转时其值不会发生变化的数据,VBA的常量有直接常量和符号常量两种表示方法直接常量就是直接表示的整数、单精度数和字符串,如1234、17.28E+9、“StuID等符号常量就是用符号表示常量,符号常量有用户定义的符号常量、系统常量和内部常量3种。

    1用户定义的符号常量 在VBA编程过程中,对于一些运用频度较多的常量,可以用符号常量方式来表示符号常量运用关键字Const来定义,格式如下:Const 符号常量称号=常量值8.2 VBA程序设计根底程序设计根底8.2.4 VBA的常量、变量、运算符和表达式的常量、变量、运算符和表达式1常量常量Private Sub Command3_Click()Const pi=3.14 r=10 msgbox “面积为&pi*r*rEnd S2系统常量 系统常量是指Access系统启动时建立的常量,有True、False、Yes、No、On、Off和Null等,编写代码时可以直接运用3内部常量 VBA提供了一些预定义的内部符号常量,它们主要作为DoCmd命令语句中的参数内部常量以前缀ac开头,如acCmdSaveAs变量是指程序运转时值会发生变化的数据在程序运转时数据是在内存中存放的,内存中的位置是用不同的名字表示的,这个名字就是变量的称号,该内存位置上的数据就是该变量的值8.2 VBA程序设计根底程序设计根底2变量变量1变量的命名规那么 在为变量命名时,应遵照以下规那么:变量名只能由字母、数字和下划线组成。

    变量名必需以字母开头不能运用系统保管的关键字,例如Sub,Function 等长度不能超越255个字符不区分英文大小写字母,如StuID、sutid和stuID 表示同一个变量2变量类型的定义 根据变量类型定义的方式,可以将变量分为隐含型变量和显式变量两种方式8.2 VBA程序设计根底程序设计根底2变量变量 隐含型变量 利用将一个值指定给变量名的方式来建立变量,如:NewVar=127该语句定义一个Variant类型变量NewVar,值127在变量名后添加不同的后缀表示变量的不同类型 例如,下面语句建立了一个整数数据类型的变量NewVar=23 当在变量称号后没有附加类型阐明字符来指明隐含变量的数据类型时,默以为Variant数据类型8.2 VBA程序设计根底程序设计根底2变量变量 显式变量 显式变量是指在运用变量时要先定义后运用 定义显式变量的方法如下:Dim 变量名 As 类型名 在一条Dim语句中可以定义多个变量,例如,上例中的语句可以改写如下Dim Var1,Var2 as String 在模块设计窗口的顶部阐明区域中,可以参与Option Explict语句来强迫要求一切变量必需定义才干运用。

    8.2 VBA程序设计根底程序设计根底2变量变量3变量的作用域 变量定义的位置不同,那么其作用的范围也不同,这就是变量的作用域根据变量的作用域的不同,可以将变量分为部分变量、模块变量和全局变量3类部分变量 部分变量是指定义在模块过程内部的变量,在子过程或函数过程中定义的或不用DimAs关键字定义而直接运用的变量,这些都是部分变量,其作用的范围是其所在的过程8.2 VBA程序设计根底程序设计根底2变量变量 模块变量 模块变量是在模块的起始位置、一切过程之外定义的变量运转时在模块所包含的一切子过程和函数过程中都可见,在该模块的一切过程中都可以运用该变量,用DimAs关键字定义的变量就是模块变量全局变量 全局变量就是在规范模块的一切过程之外的起始位置定义的变量,运转时在一切类模块和规范模块的一切子过程与函数过程中都可见,在规范模块的变量定义区域,用下面的语句定义全局变量:Public 全局变量名 As 数据类型8.2 VBA程序设计根底程序设计根底2变量变量8.2 VBA程序设计根底程序设计根底2变量变量例例:如窗体所示如窗体所示,有三个同名变量有三个同名变量,定义不用的作用域定义不用的作用域,察看其运用察看其运用4变量的生命周期 定义变量的方法不同,变量的存在时间也不同,称为继续时间或生命周期。

    按照变量的生命周期,可以将部分变量分为动态部分变量和静态部分变量动态部分变量 动态部分变量是以DimAs语句阐明的部分变量,每次子过程或函数过程被调用时,该变量会被释放静态部分变量 用Static关键字替代Dim来定义静态部分变量,该变量可以在过程的实例间保管部分变量的值8.2 VBA程序设计根底程序设计根底2变量变量4变量的生命周期 8.2 VBA程序设计根底程序设计根底2变量变量例例:编一程序编一程序,利用部分变量统计单击窗体的次数利用部分变量统计单击窗体的次数5数据库对象变量 Access中的数据库对象及其属性,都可以作为VBA程序代码中的变量及其指定的值来加以援用Access中窗体对象的援用格式为:Forms!窗体称号!控件称号.属性称号 Access中报表对象的援用格式为:Reports!报表称号!控件称号.属性称号8.2 VBA程序设计根底程序设计根底2变量变量例8-9:下面是对“学生信息窗体中“学号信息文本框的援用:Forms!学生信息!学号=“2019010105Forms!学生信息!学 号=“2019010105当需求多次援用对象时,可以运用Set关键字来建立控件对象的变量,这样处置很方便。

    例8-10:要多次援用“学生信息窗体中“姓名控件的值时,可以运用以下方式:Dim StuName As Control Set StuName=Forms!学生信息!姓名StuName=“刘磊8.2 VBA程序设计根底程序设计根底6数组 数组是一组具有一样属性和一样类型的数据,并用一致的称号作为标识的数据类型,这个称号称为数组名,数组中的每个数据称为数组元素,或称为数据元素变量数组元素在数组中的序号称为下标,数组元素变量由数组名和数组下标组成,例如,A(1)、A(2)、A(3)表示数组A的3个元素8.2 VBA程序设计根底程序设计根底2变量变量 数组在运用之前也要进展定义,定义数组的格式如下:一维数组的定义格式:Dim 数组名(下标下限 to 下标上限)As 数据类型 二维数组的定义格式:Dim 数组名(下标下限 to 下标上限,下标下限 to 下标上限)As 数据类型 除此之外,还可以定义多维数组,对于多维数组应该将多个下标用逗号分隔开,最多可以定义60维缺省情况下,下标下限为0,数组元素从“数组名(0)至“数组名(下标上限)假设运用to选项,那么可以运用非0下限8.2 VBA程序设计根底程序设计根底例8-11:定义一个有11个数组元素的整型数组,数组元素为NewArray(0)至NewArray(10)Dim NewArray(10)As Integer例8-12:定义一个有10个数组元素的整型数组,数组元素为NewArray(1)至NewArray(10)Dim NewArray(1 To 10)As Integer例8-13:定义一个三维数组NewArray,共含有44464个数组元素。

    Dim NewArray(3,3,3)As Integer 8.2 VBA程序设计根底程序设计根底VBA中,在模块的声明部分运用OptionBase语句,更改数组的默许下标下限OptionBase 1 数组的默许下标下限设置为1OptionBase 0 数组的默许下标下限设置为0VBA还可以运用动态数组,定义和运用方法如下:用Dim显式定义数组,但不指明数组元素数目用ReDim关键字来决议数组元素数目Dim NewArray()As Long 定义动态数组ReDim NewArray(5,5,5)分配数组空间大小8.2 VBA程序设计根底程序设计根底 在开发过程中,假设预先不知道数组需求定义多少元素时,动态数组是很有用的当不需求动态数组包含的元素时,可以运用ReDim将其设为0个元素,释放该数组占用的内存可以在模块的阐明区域参与Global或Dim语句,然后在程序中运用ReDim语句,以阐明动态数组为全局的和模块级的范围假设以Static取代Dim来阐明数组,数组可在程序的例如间保管它的值数组的作用域和生命周期的规那么和关键字的运用方法与传统变量的用法一样8.2 VBA程序设计根底程序设计根底在VBA编程言语中,可以将运算符分为算术运算符、关系运算符、逻辑运算符和衔接运算符4种类型。

    不同的运算符用来构成不同的表达式,来完成不同的运算和处置表达式是由运算符、函数和数据等内容组合而成的,根据运算符的类型可以将表达式分为算数表达式、关系表达式、逻辑表达式和字符串表达式4种类型1算术运算符 算术运算符用于数值的算术运算,VBA中的算术运算符有7个8.2 VBA程序设计根底程序设计根底3运算符和表达式运算符和表达式运算符运算符运算符含义运算符含义举例举例+加加3+7 3+7 结果结果1010-减减9-1 9-1 结果结果8 8*乘乘4 4*5 5 结果结果2020/除除7/2 7/2 结果结果3.53.5 整除整除52 52 结果结果2 2ModMod求模求模9Mod5 9Mod5 结果结果4 4 乘幂乘幂42 42 结果结果16168.2 VBA程序设计根底程序设计根底 算术运算符之间存在优先级,优先级是决议算术表达式的运算顺序的原那么,算术运算符优先级从高到低依次为乘幂、乘除法、整数除法、求模和加减法由算术运算符、数值、括号和正负号等构成的表达式称为算术表达式在算术表达式中,括号和正负号的优先级比算术运算符要高,括号比正负号的优先级高例8-17:算术表达式-8+20*4 Mod 6(52)的结果。

    计算 的过程如下:1计算(52)的结果为2,表达式化为-8+20*4 Mod 6 2 2计算6 2的结果为36,表达式化为-8+20*4 Mod 3 3计算20*4的结果为80,表达式化为-8+80 Mod36 4计算80 Mod 36的结果为8,表达式化为-8+8 5计算-8+8的结果为0 8.2 VBA程序设计根底程序设计根底2关系运算符 关系运算符用来表示两个值或表达式之间的大小关系,从而构成关系表达式6个关系运算符的优先级是一样的,假设它们出如今同一个表达式中,按照从左到右的顺序依次运算但关系运算符比算术运算符的优先级低关系运算的结果为逻辑值:真True和假False8.2 VBA程序设计根底程序设计根底3运算符和表达式运算符和表达式运算符运算符运算符含义运算符含义举例举例 大于大于85 85 结果结果TrueTrue 小于小于54 5=大于或等于大于或等于9=5 9=5 结果结果TrueTrue=小于或等于小于或等于4=9 4=9 结果结果TrueTrue不等于不等于22 22 结果结果FalseFalse8.2 VBA程序设计根底程序设计根底3逻辑运算符 逻辑运算符也叫布尔运算符,用于完成逻辑运算。

    VBA中有与And、或Or和非Not等6个逻辑运算符运算符运算符运算运算含义含义AndAnd与与两个表达式同时为真则为真,否则为假两个表达式同时为真则为真,否则为假OrOr或或两个表达式中有一个为真则为真,否则为假两个表达式中有一个为真则为真,否则为假NotNot非非由真变假或由假变真由真变假或由假变真XorXor异或异或两个表达式的值相同时为假,不同时为真两个表达式的值相同时为假,不同时为真EqvEqv等价等价两个表达式的值相同时为真,不同时为假两个表达式的值相同时为真,不同时为假ImpImp蕴含蕴含当第一个表达式为真,且第二个表达式为假,当第一个表达式为真,且第二个表达式为假,则值为假,否则为真则值为假,否则为真8.2 VBA程序设计根底程序设计根底 运用逻辑运算符可以对两个逻辑量进展逻辑运算,其结果仍为逻辑值真True或假False 逻辑运算符的优先级低于关系运算符,常用的3个逻 辑运算符之间的优先级由高到低依次为:非运算Not,与运算符And,或运算符Or8.2 VBA程序设计根底程序设计根底 4衔接运算符 衔接运算符具有衔接字符串的功能在VBA中有“&和“+两个运算符运算符用来强迫两个表达式作字符串衔接。

    运算符是当两个表达式均为字符串数据时,才将 两个字符串衔接成一个新字符串当一个表达式由多个运算符衔接在一同时,运算进展的先后顺序是由运算符的优先级决议的优先级高的运算先进展,优先级一样的运算按照从左向右的顺序进展上述4种运算符的优先级由高到低依次为算术运算符、衔接运算符、关系运算符、逻辑运算符返返 回回8.2 VBA程序设计根底程序设计根底3运算符和表达式运算符和表达式 在VBA中提供了近百个内置的规范函数,用户可以直接调用规范函数来完成许多操作规范函数的调用方式如下:函数名(参数表列)数学函数用来完成数学计算功能函数函数名称名称作用作用Abs(Abs(数值表达式数值表达式)绝对值函数绝对值函数返回数值表达式的绝对值返回数值表达式的绝对值Int(Int(数值表达式数值表达式)取整函数取整函数返回数值表达式的整数部分返回数值表达式的整数部分8.3 常用规范函数常用规范函数 1数学函数数学函数Fix(Fix(数值表达式数值表达式)取整函数取整函数参数为正值时,与参数为正值时,与IntInt函数相同函数相同参数为负值时,参数为负值时,IntInt函数返回小于函数返回小于等于参数值的第一个负数,而等于参数值的第一个负数,而FixFix函数返回大于等于参数值的第一个函数返回大于等于参数值的第一个负数。

    负数Exp(Exp(数值表达式数值表达式)自然指数函数自然指数函数计算计算e e的的N N次方,返回一个双精度数次方,返回一个双精度数Log(Log(数值表达式数值表达式)自然对数函数自然对数函数计算以计算以e e为底的数值表达式的值的为底的数值表达式的值的对数对数Sqr(Sqr(数值表达式数值表达式)开平方函数开平方函数计算数值表达式的平方根计算数值表达式的平方根Sin(Sin(数值表达式数值表达式)正弦三角函数正弦三角函数计算数值表达式的正弦值,数值表计算数值表达式的正弦值,数值表达式值表示以弧度为单位的角度值达式值表示以弧度为单位的角度值8.3 常用规范函数常用规范函数例8-20:常用数学函数举例如下:Abs(-7)=7Exp(2)=7.389 056 098 930 65Log(6)=1.791 759 469 228 05Sqr(25)=5Int(6.28)=6,Fix(6.28)=6Int(-6.28)=-7,Fix(-6.28)=-6Sin(90*3.14159/180)Cos(45*3.14159/180)Tan(30*3.14159/l80)Int(100*Rnd)Int(101*Rnd)8.3 常用规范函数常用规范函数字符串函数完成字符串处置功能。

    1字符串检索函数函数格式:InStr(Start,Strl,Str2)函数功能:检索子字符串Str2在字符串Strl中最早出现的位置,前往整型数8.3 常用规范函数常用规范函数2字符串函数字符串函数例8-21:知Strl=“123456,Str2=“56s=InStr(strl,str2)前往5 s=InStr(3,“aBCdAb,“a)前往 2字符串长度检测函数函数格式:Len(字符串表达式或变量名)函数功能:前往字符串中所包含字符个数参数阐明:对于定长字符串变量,其长度是定义时的长度,和字符串实践值无关3字符串截取函数函数格式:Left(字符串表达式,N)Right(字符串表达式,N)Mid(字符串表达式,N1,N2)8.3 常用规范函数常用规范函数2字符串函数字符串函数 4生成空格字符函数函数格式:Space(数值表达式)函数功能:Space函数可以前往数值表达式的值指定的空格字符数8.3 常用规范函数常用规范函数2字符串函数字符串函数5大小写转换函数函数格式:Ucase(字符串表达式)Lcase(字符串表达式)函数功能:Ucase函数可以将字符串中小写字母转成大写字母Lcase函数可以将字符串中大写字母转成小写字母。

    6删除空格函数函数格式:LTrim(字符串表达式)RTrim(字符串表达式)Trim(字符串表达式)函数功能:LTrim函数可以删除字符串的开场空格RTrim函数可以删除字符串的尾部空格Trim函数可以删除字符串的开场和尾部空格8.3 常用规范函数常用规范函数2字符串函数字符串函数日期/时间函数的功能是处置日期和时间主要包括以下函数:1获取系统日期和时间函数 函数格式:Date Time Now函数功能:Date函数可以前往当前系统日期Time函数可以前往当前系统时间Now函数可以前往当前系统日期和时间8.3 常用规范函数常用规范函数3日期日期/时间函数时间函数2截取日期分量函数函数格式:Year(日期表达式)Month(日期表达式)Day(日期表达式)Weekday(日期表达式,W)函数功能:Year函数可以前往日期表达式年份的整数Month函数可以前往日期表达式月份的整数Day函数可以前往日期表达式日期的整数Weekday函数可以前往17的整数,表示星期参数阐明:Weekday函数中,参数W可以指定一个星期的第一天是星期几缺省时周日是一个星期的第一天,W的值为vbSunday或18.3 常用规范函数常用规范函数3日期日期/时间函数时间函数3截取时间分量函数函数格式:Hour(时间表达式)Minute(时间表达式)Second(时间表达式)函数功能:Hour函数可以前往时间表达式的小时数0-23。

    Minute函数可以前往时间表达式的分钟数0-59Second函数可以前往时间表达式的秒数0598.3 常用规范函数常用规范函数3日期日期/时间函数时间函数1字符串转换字符代码函数函数格式:Asc(字符串表达式)函数功能:Asc函数可以前往字符串首字符的ASCII值2字符代码转换字符函数函数格式:Chr(字符代码)函数功能:Chr函数可以前往与字符代码相关的字符8.3 常用规范函数常用规范函数4类型转换函数类型转换函数类型转换函数可以将数据类型转换成指定类型4字符串转换成数字函数函数格式:Val(字符串表达式)函数功能:Val函数可以将数字字符串转换成数值型数字参数阐明:数字字符串转换时可自动将字符串中的空格、制表符和换行符去掉,当遇到第一个不能识别的字符时,停顿转换8.3 常用规范函数常用规范函数3数字转换成字符串函数函数格式:Str(数值表达式)函数功能:Str函数可以将数值表达式值转换成字符串参数阐明:数值表达式的值为正时,前往的字符串将包含一个前导空格4类型转换函数类型转换函数5验证函数验证函数Access提供了一些对数据进展校验的函数函数名称函数名称返回值返回值说说 明明IsNumericIsNumericBooleanBoolean值值指出表达式的运算结果是否为数值。

    返指出表达式的运算结果是否为数值返回回TrueTrue,为数值,为数值IsDateIsDateBooleanBoolean值值指出一个表达式是否可以转换成日期指出一个表达式是否可以转换成日期返回返回TrueTrue,可转换,可转换IsNullIsNullBooleanBoolean值值指出表达式是否为无效数据指出表达式是否为无效数据(Null)(Null)返回回TrueTrue,无效数据,无效数据IsEmptyIsEmptyBooleanBoolean值值指出变量是否已经初始化返回指出变量是否已经初始化返回TrueTrue,未初始化未初始化IsArravIsArravBooleanBoolean值值指出变量是否为一个数组返回指出变量是否为一个数组返回TrueTrue,为数组为数组IsErrorIsErrorBooleanBoolean值值指出表达式是否为一个错误值返回指出表达式是否为一个错误值返回TrueTrue,有错误,有错误IsObjectIsObjectBooleanBoolean值值指出标识符是否表示对象变量返回指出标识符是否表示对象变量返回TrueTrue,为对象,为对象8.3 常用规范函数常用规范函数 输入框函数用于在一个对话框中显示提示,等待用户输入正文并按下按钮,然后前往包含文本框内容的数据信息。

    函数格式:InputBox(Prompt,Titlel(,Default,Xpos,Ypos,Helpfile,Context)8.3 常用规范函数常用规范函数6输入框函数输入框函数例例:Private Sub Command1_Click()q1=InputBox(“请输入您的身份证号请输入您的身份证号,“输入身份证号输入身份证号,“19781201)msgbox “他的身份证号是他的身份证号是:&q1End Sub提示提示缺省缺省标题标题提示提示缺省缺省标题标题音讯框用于在对话框中显示音讯,等待用户单击按钮,并前往一个整型值指示用户单击了哪一个按钮函数格式:MsgBox Prompt,Buttons,Title,Helpfile,Context8.3 常用规范函数常用规范函数7音讯框函数音讯框函数 一个程序由多条不同功能的语句组成,每条语句可以完成某个特定的操作在VBA程序中,按照功能的不同将程序语句分为声明语句和执行语句两类声明语句用于定义变量、常量或过程执行语句用于执行赋值操作、调用过程和实现各种流程控制执行语句可以根据流程的不同分为顺序构造、条件构造和循环构造3种顺序构造是按照语句的先后顺序依次执行。

    条件构造是根据条件选择执行不同的分支语句,又称为选择构造循环构造是根据某个条件反复执行某一段程序语句8.4 VBA的程序构造的程序构造8.4.1 语句语句1Rem语句 语句格式:Rem 注释内容2英文单引号“语句格式:注释内容注释可以添加到程序模块的任何位置,并且默许以绿色文本显示8.4 VBA的程序构造的程序构造8.4.1 语句语句1注释语句注释语句声明语句用于命名和定义常量、变量、数组和过程,同时也定义了它们的生命周期与作用范围2声明语句声明语句赋值语句是为变量指定一个值或表达式格式:Let 变量名=值或表达式 例如:x=y x=x+1 label0.caption=“总成果 Text11=“欢迎运用Access8.4 VBA的程序构造的程序构造3赋值语句赋值语句4GoTo语句语句GoTo语句和语句标号一同用于实现无条件跳转语句格式为:GoTo 语句标号8.4.1 语句语句 条件语句可以根据条件表达式的值来选择程序运转的分支语句,主要有以下一些构造:8.4 VBA的程序构造的程序构造8.4.2 条件语句条件语句1单分支If语句格式:If 条件表达式 Then 语句序列 End If 当程序执行到这种格式的If语句时,假设条件表达式为真,将执行Then后面的语句序列,假设条件表达式为假,程序将跳过语句序列而直接执行End If后面的语句。

    1If语句语句例:完善鸡兔同笼,当算出的数据为小数时,不输出8.4 VBA的程序构造的程序构造1If语句语句8.4.2 条件语句条件语句2双分支If语句格式:If 条件表达式 Then语句序列1Else语句序列2End If当程序执行到这种格式的If语句时,假设条件表达式为真,将执行Then和Else之间的语句序列1,假设条件表达式为假,程序将执行Else和End If之间的语句序列8.4 VBA的程序构造的程序构造8.4.2 条件语句条件语句1If语句语句例:完善鸡兔同笼,当算出的数据正确时输出,错误时提示例:完善鸡兔同笼,当算出的数据正确时输出,错误时提示8.4 VBA的程序构造的程序构造Dim x As Integerx=MsgBox(“真的要退出系统吗?,1+64+0,“信息提示)If x=VbOk ThenMsgBox“他单击了确定按钮!,0+64+0,“信息提示 ElseMsgBox“他单击了取消按钮!,0+64+0,“信息提示 End If8.4 VBA的程序构造的程序构造例8-38:双分支If语句举例3嵌套的If语句格式:If 条件表达式1 Then语句序列1ElseIf 条件表达式2 Then语句序列2Else语句序列3End IfEnd If8.4 VBA的程序构造的程序构造1If语句语句8.4.2 条件语句条件语句格式:If 条件表达式1 Then语句序列1ElseIf 条件表达式2 Then语句序列2Elseif 条件表达式3 Then语句序列3else 语句序列nEnd IfEnd I方法二:方法二:Dim x!Dim x!X=inputbox(“x=X=inputbox(“x=)If x0 ThenIf x0 Theny=Sqr(x)y=Sqr(x)ElseIf x=0 ThenElseIf x=0 Theny=0y=0ElseElsey=Abs(x)y=Abs(x)End IfEnd IfMsgbox yMsgbox y8.4 VBA的程序构造的程序构造例例8-39:运用:运用If语句嵌套构造计算表达式语句嵌套构造计算表达式y的值。

    的值x)1/2 x=0Y=0 x=0 IxI x0 ThenIf x0 Theny=Sqr(x)y=Sqr(x)ElseElse if x=0 then if x=0 then y=0 y=0 Else Else y=Abs(x)y=Abs(x)endif endifEnd IfEnd IfMsgbox yMsgbox 当条件选项较多时,Select语句就可以处理多重嵌套控制构造这类问题格式:Select Case 表达式 Case 表达式1 语句序列1 Case 表达式2语句序列2 Case 表达式 n 语句序列n Case Else 语句序列n+1 End Select8.4 VBA的程序构造的程序构造8.4.2 条件语句条件语句2Select语句语句Case表达式可以是以下4种格式之一:单一数值,如Case 2一行并列的数值,数值之间用逗号隔开,如Case 5,6,7 用关键字To分隔开两个数值或表达式之间的范围,如Case 1 to 10 用关键字Is衔接关系运算符,如=、=,后面跟变量或详细的值,Is=15Case语句是依次测试的,并执行第一个符合Case条件的相关的程序代码,即使再有其他符合条件的分支也不会再执行。

    假设没有找到符合条件的,并且有Case Else语句,就会执行该语句后面的程序代码8.4 VBA的程序构造的程序构造2Select语句语句例:根据用户从键盘输入的数据,判别输入字符的类型8.4 VBA的程序构造的程序构造2Select语句语句Dim str$,x$x=inputbox(“x)Select Case xCase“A To“ZStr=“UpperCaseCase“a To“zStr=“LowerCaseCase“0 To“9Str=“NumberCase ElseStr=“其他符号End SelectMsgbox x&例:将百分制成果按要求转换成相应的等次输出8.4 VBA的程序构造的程序构造2Select语句语句在VBA中,除了If和Select两种条件语句外,还有3个函数可以实现分支选择操作1IIf函数函数格式:IIf(条件式,表达式1,表达式2)函数功能:IIf函数根据“条件式的值来决议函数前往值假设“条件式的值为真,函数前往“表达式1的值,假设“条件式值为假,函数前往“表达式2的值例如:maxnum=iif(xy,x,y)8.4 VBA的程序构造的程序构造3分支功能的函数分支功能的函数8.4.2 条件语句条件语句2Switch函数函数格式:Switch(条件式1,表达式1,条件式2,表达式2 ,条件式n,表达式n)函数功能:Switch函数根据“条件式1、“条件式2“条件式n的值来决议函数前往值。

    条件式是由左至右进展计算判别的,在第一个相关的条件式为真时,将该表达式作为函数前往值例8-41:运用该函数实现符号函数的功能 y=switch(x0,1,x=0,0,x max Then max=x End If Next i Label3.Caption=最大数为:&maxEnd Sub思索:如何求最大数的位置?1Do WhileLoop功能:当条件式结果为真时,反复执行循环体当条件式结果为假或执行到Exit Do时,终了循环语句格式:Do While 条件式 循环体 条件语句序列 Exit Do 终了条件语句序列Loop8.4 VBA的程序构造的程序构造2DoLoop语句语句8.4.3 循环语句循环语句例8-45:用Do WhileLoop语句计算1100之间数的和Dim i As IntegerDim Sum As Integeri=1Do While i100 Sum=Sum+ii=i+1Loop返返 回回8.4 VBA的程序构造的程序构造2DoLoop语句语句8.4.3 循环语句循环语句对比:用Do WhileLoop语句计算1100之间数的和Dim i As IntegerDim Sum As Integeri=1Do While iVal2 Then If Val1Val2 ThenMaxFunc=Val1MaxFunc=Val1 Else ElseMaxFunc=Val2MaxFunc=Val2 End If End If End Function End Function调用函数过程调用函数过程MaxFuncMaxFunc比较变量比较变量X X和和Y Y:Z=MaxFunc(X,Y)Z=MaxFunc(X,Y)调用函数过程调用函数过程MaxFuncMaxFunc比较变量比较变量X X,Y Y和和Z Z:Z=MaxFunc(MaxFunc(X,Y),Z)Z=MaxFunc(MaxFunc(X,Y),Z)MaxFunc(X,Y)MaxFunc(X,Y)的前往值的前往值作为另一次调用的实参作为另一次调用的实参8.6 过程调用和参数传送过程调用和参数传送过程定义时可以设置一个或多个方式参数,所以过程调用时可以向过程传送一个或多个参数,多个参数之间用逗号分隔。

    返返 回回8.6 过程调用和参数传送过程调用和参。

    点击阅读更多内容
    卖家[上传人]:无极剑圣
    资质:实名认证