2.43k likes | 2.77k Views
第 10 章 VBA 程序设计. VBA 概述 VBA 编程语言基础 VBA 的编程环境 模块与过程 面向对象程序设计基础. 第 10 章 VBA 程序设计.
E N D
第10章 VBA程序设计 • VBA概述 • VBA编程语言基础 • VBA的编程环境 • 模块与过程 • 面向对象程序设计基础
第10章 VBA程序设计 • VBA是Visual Basic for Applications的简称。它实际上是Visual Basic编程语言的一个子集。VBA从语言功能上与Visual Basic程序语言相互兼容,这使得具有Visual Basic编程基础的用户能够迅速地过渡到使用VBA进行数据库开发。使用VBA开发的程序一般保存在Access的模块中,以供Access的“宏”或窗体来调用。
第10章 VBA程序设计 • 使用VBA的优点 • 能进行错误处理 • 运行速度快 • 功能更强大 • 控制能力更强 • 与外部交互的能力更强
VBA编程环境(VBE) • VBA的编程环境Microsoft Visual Basic Editor(VBE)是用户编写程序、运行程序和调试程序的工作环境。
启动VBE程序编辑器 • 法三 • Access中打开相关的数据库。 • 单击数据库窗口中对象下的“模块”按钮, • 双击要查看或编辑的模块。
VBE程序编辑器 从视图菜单选择窗口和工具栏来启动所需窗口和工具栏。
VBE中的窗口 • 代码窗口:编写、显示以及编辑VBA代码。 • 立即窗口:立即执行代码,不保存。 • 监视窗口:显示当前程序中所定义的监视表达式的值 。
代码窗口 选择[模块]对象,再单击[新建]按钮 打开代码窗口 工程窗口
属性窗口 • 属性窗口可以显示选定对象的属性,而且还可以对这些属性进行修改,如果选定了多个对象,属性窗口会列出所有控件的共同属性。
“标准”工具栏 “编辑”工具栏
VBA编程语言基础 • VBA编程语言的基础部分是面向过程的程序设计语言。它是为完成某项任务而事先写好的命令、语句序列。这些命令、语句序列以模块的形式存起来。通常这些语句包含常量、变量、运算符、函数数据库对象等。
VBA数据类型 符号 取值范围 占内存大小 默认值 Byte(字节) 0~255 1字节 0 Integer(整型) % −32768~32767 2字节 0 Long(长整型) & −2147483648~2147483647 4字节 False VBA的数据类型 • 基本数据类型 • 字符串型、数值型数据、字节、货币、日期、布尔和变体数据类型等。
Boolean(布尔) True 或者False 2字节 0 Single(单精度) ! −3.4E38~3.4E38 4字节 0 Double(双精度) −1.8E308~4.9E324 8字节 0 Currency(货币) @ −922,337,203,685,477.5808~922,337,203,685,477.5807 8字节 0 String(字符串) $ 根据实际字符而定 11+字符串长 空串 Date(日期) 100年1月1日~9999年12月31日 8字节 0 Object(对象) 任何可用对象 4字节 空 Variant(变体) 数值为双精度,字符 数值为16字节 字符为22+字符串长 空 VBA中的基本数据类型
VBA的标识符 • 标识符是程序中常量、变量、过程等对象的名字。 • 标识符的规则: • 第一个字符必须是字母 • 字符数不超过255个 • 不能与VBA的关键字同名 • 不能使用! @ & $ #和空格
VBA常量、变量和表达式 • 常量 • 常量是指在程序执行的过程中,其值不会发生改变的量。 • 在程序中引入常量的主要目的是提高程序的可读性,使程序更容易理解,并且可以使代码更容易维护。
VBA常量、变量和表达式 • 常量 • 在程序执行的过程中,其值不会发生变化的量。 • 例: • 3.1415926 • “四川大学” • #9/1/2005#
VBA常量 • 符号常量 • 符号常量多用来表示在VBA模块中其值不变的量。它是由用户定义的模块级常量。定义常量后,可以在以后需要时自由地使用它们。但不能对其重新赋值 • 格式: Const <常量名>=<表达式> • 例:const PI=3.1415926 • const MYSchool=“四川大学” • const Mybirth=#01/01/1990#
VBA常量 • 固有常量(内置常量) • 在VBA中有一些事先定义好的常量,我们称之为固有常量,或内置常量。 在宏或VBA代码中直接使用。 • Visual Basic库中的固有常量都以“vb”开头。大约有700多个这样的固有常量。 • Microsoft Access库中的固有常量以“ac”开头, • ADO(ActiveX Data Object(ActiveX数据对象)库中的固有常量则以“ad”开头。 • 例如:acForm,adAddNew,vbCurrency
VBA常量 • Access系统常量 • 系统定义有3个常量:True、False和 Null。 • 系统常量可在所有应用程序中使用。 • <>,!=
VBA常量、变量和表达式 • 变量 • 变量是在程序执行过程中其值可以发生变化的量。变量是存储程序运行时所产生值的地方。每个变量都有变量名,用户是通过变量名来访问内存中的数据的。
VBA常量、变量和表达式 • 变量的命名 • 变量名须以字母开头,其后只可以跟字母、数字和下划线“_”。 • 变量名不能超过255个字符,而且中间不能包含句点或类型说明符号。 • VBA对变量名的大小写均可,即“abc”与“ABC”同名。
例如,下面都是合法的变量名: • Abc_1 • B123C • T1 • 而下面的变量名都是不合法的: • 1ABC • ABC 1 • T,1 • ABC%A
VBA常量、变量和表达式 • 变量的作用域和生命周期 • 变量的作用域指的是变量在整个程序中被认知的范围。 • 变量的生命周期则是说明变量存在的时间范围。 • 未声明的是变体型 a,b,c,d A,b,c,e A,b,c,f 通用声明
VBA常量、变量和表达式 • 声明变量 • 使用类型说明符号声明变量 • 变量的类型符号(直接使用): • %(Integer,整型) • &(Long,长整型) • !(Single,单精度实型) • #(Double,双精度实型) • $(String,字符串) • @(Currency,货币) x%=123 y#=456.78 z$="Hello"
VBA常量、变量和表达式 • 使用Dim语句声明变量 • 格式 Dim <变量名> [ As <数据类型>] • 例如: • Dim x As Integer 声明了一个整型变量x • Dim y As String 声明了一个字符型变量y • Dim z As Date 声明了一个日期型变量z • Dim x As Integer,y,z As double • 使用Dim语句说明变量称为显式声明。而如果不用Dim语句说明直接使用的变量就是变体型变量。
VBA常量、变量和表达式 • 声明变量 • 例: • Dim x As Integer • Dim x As Integer,y,z As double
本地变量:仅在声明变量的过程和函数中有效。 • Dim 变量名 As 数据类型 • 私有变量:对当前模块中所有函数和过程都有效。 • Private 变量名As数据类型 • 公共变量:在所有模块的所有过程和函数都可以使用。 • Public 变量名As数据类型
VBA常量、变量和表达式 • 使用Type语句声明变量 • 定义的类型是由用户自己定义的一种数据类型。它可以包含多个基本数据类型或一个已定义的Type类型。 • 使用Type语句定义一个名为Teacher的数据类型: • Type Teacher • ID As Long 教师编号为长整型 • Name As String 教师姓名为字符型 • Age As Date 教师年龄为日期型 • End Type • Dim ta As Teacher
函数 • 函数是数据运算的一种特殊形式,用来实现某些特定的运算。而有些运算要求有时会反复用到,因此,在VBA中会将有些常用的东西以内部系统函数的形式出现。这样当用户需要时可以直接调用。
函数 • 调用函数: • Call <函数名> ([<参数1>][,<参数2>] …) • <函数名> [<参数1>][,<参数2>] … • 变量 = <函数名> ([<参数1>][,<参数2>] …)
函数 • 函数的分类: • 系统函数(系统内部函数) • 用户自定义函数(用户根据需要自己编写的函数) • 根据函数的返回值的类型,函数可以分为数值型、字符串型、日期/时间型和类型转换型
数值型函数(在立即窗口中测试) 表10-2 VBA常用数值函数
数值型函数 • ?abs(-1),abs(1),abs(0) • 1 1 0 • ?exp(1),exp(0) • 2.71828182845905 1 • ?int(12.3),int(-12.3),int(12.5) • 12 -13 12 • ?rnd(x),rnd(x+1) • 1.953125E-02 1.401764E-02
数值型函数 • ?round(1),round(1.4),round(1.5) • 1 1 2 • ?round(1.53,1),round(1.55,1) • 1.5 1.6 • ?sgn(2),sgn(-2),sgn(0) • 1 -1 0 • ?sqr(9),sqr(4),sqr(0) • 3 2 0
字符串型函数 • ?asc("abc"),asc("bca"),asc("cab") • 97 98 99 • ?chr(99),chr(98),chr(97) • c b a • ?len("abc"),len(" abc"),len(" abc "),len(" abc 1 ") • 3 4 5 7 • ?left("abcde",2),right("abcde",2),mid("abcde",3,2) • ab de cd • ?left("我们是大学生",2) • 我们
字符串型函数 • ?string(1,"abc"),string(2,"abc"),string(3,"abc"),string(4,"abc") • a aa aaa aaaa • ?"a"+space(2)+"bc" • a bc • ?len(ltrim(" abc")),len(rtrim("abc ") ) • 3 3 • ?lcase("ABCDE123abc"),ucase("123abcDEF") • abcde123abc 123ABCDEF • ?val("a12"),val("12a"),val("12")+val("12"),"12"+"12" • 0 12 24 1212
InputBox()函数 • InputBox()函数用从一个对话框中输入数据。它的返回值的类型由接受返回值变量的类型所决定 。 • 格式: InputBox(Prompt[,Title][,Default][,Xpos][,Ypos])
MsgBox()函数 • MsgBox()函数用“消息对话框”来输出计算结果。 • 格式:MsgBox(Prompt[,Buttons][,Title]) MsgBox 函数的按钮名称及返回值
MsgBox()函数 • a=MsgBox("请进!",vbOK,"入口") • a=MsgBox("请出!",vbCancel,"出口")
MsgBox()函数 • a=MsgBox("请出!",3+32,"出口") • a=MsgBox("请出!",Vbcancel+vbInformation,"出口")
运算符与表达式 • 运算符是对数据进行操作运算的符号。这些数据必须是同一类型的。 • 表达式是由常量、变量、函数和运算符组成的运算式。它是VBA的重要组成部分。表达式的类型一般由运算符决定。 • 100 • []+100 “女”