首页 百科知识 学习VBA编程基础,实现更高效的ACCESS数据库操作

学习VBA编程基础,实现更高效的ACCESS数据库操作

时间:2024-01-25 百科知识 版权反馈
【摘要】:VBA是Microsoft公司Office系列软件中内置的用来开发应用系统的编程语言,包括VB主要的语法结构、函数和命令等,但是二者又有本质区别。VBA事件过程代码是内置在窗体和报表的定义之中的,这样避免了宏对象过多而造成混乱。使用VBA则可以在程序运行过程中修改操作参数值。知识点2VBA编程环境Access所提供的VBA开发环境又称为VBE,在VBE中可以编写VBA函数、过程和VBA模块。表7.1VBA基本数据类型2.常量常量是指在程序运行过程中值不变的量。

学习VBA编程基础,实现更高效的ACCESS数据库操作

【任务引导】

VBA是Microsoft公司Office系列软件中内置的用来开发应用系统的编程语言,包括VB主要的语法结构、函数和命令等,但是二者又有本质区别。Visual Basic是微软公司推出的可视化BASIC语言,是一种编程简单、功能强大的面向对象的开发工具,可以像编写VB程序那样来编写VBA程序。

【知识储备】

知识点1 VBA概述

VBA功能强大且编程简单易学,继承了大部分VB的语法和面向对象的程序设计方法。用VBA语言编写的代码将保存在Access中的一个模块里。并通过类似在窗体中激发操作来启动这个模块,从而实现相应的功能。

由于VBA执行命令、流程控制以及错误处理机制灵活,因此VBA具有以下几个方面的特点:

(1)使数据库易于维护。宏是独立于窗体和报表的对象。当数据库的运行趋于复杂时,过多的宏则会使数据库难以维护。VBA事件过程代码是内置在窗体和报表的定义之中的,这样避免了宏对象过多而造成混乱。

(2)可创建用户自定义函数。虽然Access内置了非常丰富的函数,然而通过VBA,用户可以根据数据库应用系统的需求来创建自定义函数,完成要执行的运算与操作任务。

(3)可创建或处理对象。在大部分情况下,通过设计视图就能以直观、简易的方式创建或处理对象。而在某些特殊情况下,只能使用代码来定义对象或修改对象的属性等。使用VBA可以处理数据库中的所有对象,包括数据库本身。

(4)可修改参数。使用VBA则可以在程序运行过程中修改操作参数值。

(5)可执行系统操作。虽然宏操作RunApp可以运行一个基于Microsoft Windows或Microsoft MS-DOS的应用程序,但具有鲜明的局限性。使用VBA则可以利用动态数据交换技术与另一个应用程序进行通信,还可以调用Windows动态链接库中的函数。

知识点2 VBA编程环境

Access所提供的VBA开发环境又称为VBE(Visual Basic Editor),在VBE中可以编写VBA函数、过程和VBA模块。

VBE编辑器主要由代码窗口、立即窗口、监视窗口、本地窗口、属性窗口、对象浏览器以及工程资源管理器等窗口组成。

Visual Basic编辑器由菜单栏工具栏和多个窗口组成。若打开的Visual Basic编辑器窗口缺少部分窗口,可以在“视图”菜单下单击相应选项打开需要的窗口,如图7-2所示。

工具栏

Visual Basic编辑器中有多种工具栏,包括“标准”工具栏、“编辑”工具栏、“调试”工具栏和“用户窗体”工具栏。执行“视图”|“工具栏”菜单命令,可以根据需要打开和关闭各种工具栏。

“标准”工具栏中包含了最为常用的菜单项快捷方式的按钮。“标准”工具栏是Visual Basic编辑器默认显示的工具栏,如图7-5所示。

图7-5 “标准”工具栏

2.工程资源管理器窗口

工程资源管理器显示工程层次结构的列表,以及每个工程所包含与引用的项目成员。VBA项目成员包括Office 2010对象、模块、用户自定义窗体等,如图7-6所示。

图7-6 工程资源管理器

3.属性窗口

属性窗口用来查看和设置对象的属性,如图7-7所示。

图7-7 属性窗口

4.代码窗口

代码窗口用来显示和编辑不同窗体或模块中的VBA代码,如图7-8所示。

图7-8 代码窗口

5.对象浏览器

对象浏览器窗口用来显示对象库以及过程的可用类、属性、方法、事件、常量和变量。可以用它来搜索已有对象,或源于其他应用程序的对象,如图7-9所示。

图7-9 对象浏览器

6.立即窗口

用户可以在立即窗口中输入或粘贴一行代码,然后按Enter键执行该代码,如图7-10所示。

图7-10 立即窗口

7.监视窗口

监视窗口用于显示当前工程定义的监视表达式的值,如图7-11所示。

图7-11 监视窗口

8.本地窗口

本地窗口内部自动显示所有当前过程中的变量声明及变量值,从中可以观察到数据信息,如图7-12所示

7-12 本地窗口

知识点3 VBA程序设计语法基础

1.VBA基本数据类型

VBA提供了较为完备的数据类型,除了基本数据类型外,VBA还支持用户自定义类型。不同的数据类型有不同的内存空间,也有不同的运算方式。表7.1所示为11种基本数据类型的关键字、存储空间和取值范围。

其中,字符串类型又分为变长字符串(String)类型和定长字符串(String*Length)类型,变长字符串类型的存储空间和取值范围依据字符串的长度而定。变体类型(Variant)也是一种特殊的数据类型,既可以用来处理数值数据又可以处理字符串数据,处理数值时最大可以为双精度类型(Double)的取值范围,处理字符串时具有与变长字符串类型(String)相同的取值范围。

表7.1 VBA基本数据类型

2.常量

常量是指在程序运行过程中值不变的量。常量的使用能够增加代码的可读性,并且使代码易于维护。VBA中的常量可分为4种:直接常量、符号常量、固有常量和系统常量。

(1)直接常量。直接常量也称为字面常量,根据字面值即可判断。如123、-5.0、Chi⁃na、“Visual Basic 6.0中文企业版”等。

(2)符号常量。符号常量是由用户定义的常量,常量将程序代码中频繁使用的某些特定值定义为符号常量。VBA中使用Const关键字来声明符号常量,一般格式如下:

Const常量名[As数据类型]=常量表达式

例如:

Const PI As Double=3.1415926

Const Price=200

Const addr As string=“China”

【提示】本书的全部格式说明中,统一使用中括号([ ])代表可选输入内容,尖括号(< >)代表必须输入内容。

(3)固有常量。固有常量可在程序设计过程中代替实际值,使代码编写更为简单。固有常量使用两个字母的前缀,表示该常量所在的对象库。Access库的常量以ac为前缀,ADO库的常量以ad为前缀,Visual Basic库的常量以vb为前缀。

固有常量有常量和数值两种表示方法,两者是等价的。例如,“红色”的“固有常量”是vbRed,对应的数值是0xFF。以0x开头的数是十六进制数,0xFF即十六进制数FF,转换成十进制数为255。固有常量可以在对象浏览器中查看。

(4)系统常量。VBA中有4个系统常量:True和False表示逻辑值的“真”和“假”,Empty表示变体类型变量尚未指定初始值,Null表示一个无效数据。

3.变量

变量是在程序运行过程中值可以改变的量,每个变量有名字和相应的数据类型,数据类型决定了该变量的存储方式和运算规则。此外,变量必须先定义后使用。

(1)变量的命名规则

变量名只能由字母、数字、下划线组成且必须以字母开头,长度不得超过255个字符。不能在变量名中使用空格、标点符号等其他特殊字符,不能使用Access和VBA中所使用的关键字,如Const、Between、And、Like等。变量名不区分大小写

(2)变量名的声明。格式如下:

Dim变量名[As数据类型]

例如:

Dim a As Integer

Dim No As String*10

Dim Name As String

Dim x as Single,y As Double

Dim m,n

【提示】若声明变量时未指定数据类型,则系统默认为变体类型(Variant)。

4.运算符与表达式

在VBA编程语言中,提供了许多运算符来完成各种形式的运算和处理。根据运算不同,可以分成4种类型的运算符:算术运算符、关系运算符、逻辑运算符、字符串连接运算符。将常量、变量等用上述运算符连接在一起构成的式子就是表达式。

(1)算术运算符与表达式。表7.2列举了VBA中的算术运算符。

表7.2 算术运算符

运算符的优先级顺序由高到低为:取负——指数——乘、除——整除——取模——加、减。

(2)关系运算符与表达式。表7.3列举了VBA中的关系运算符。

表7.3 关系运算符

关系运算符也称比较运算符。由关系运算符连接起来的表达式成为关系表达式。关系表达式的结果是一个逻辑值,即“真(True)”或“假(False)”。

“>”、“>=”、“<”、“<=”4种运算符的优先级相同,“=”、“< >”运算符的优先级相同,且前4种运算符的优先级高于后2种运算符。

(3)逻辑运算符与表达式。表7.4列举了VBA中的常见逻辑运算符。

表7.4 逻辑运算符

逻辑运算也称布尔运算,常见的逻辑运算符有3种;逻辑非、逻辑与、逻辑或。运算符的优先级顺序由高到低为:逻辑非——逻辑与——逻辑或。

由逻辑运算符连接起来的表达式成为逻辑表达式。逻辑表达式的结果是“真(True)”或“假(False)”。

(4)字符串连接运算符与表达式

字符串连接运算符具有连接字符串的功能,有“&”和“+”两个运算符。“&”用来强制连接两个表达式作字符串连接。例如连接式:“4+6”&“=”&(4+6)的运算结果为“4+6= 10”。“+”运算符是当两个表达式均为字符串数据时,才能将两个字符串连接成一个新的字符串。否则会产生类型不匹配错误。

5.常用标准函数

在VBA中除在模块创建时可以定义子过程和函数过程完成特定功能外,又提供了近百个内置标准函数,可以方便完成许多操作。

标准函数一般用于表达式中,其形式如下:

函数名(<参数1><,参数2>[,参数3][,参数4]…)

其中,函数名必不可少,函数的参数放在函数名后的圆括号内,参数可以是常量、变量或表达式,也可以是一个或多个,少数函数为无参函数。每个函数被调用时,都会有一个返回值。下面按分类介绍一些常用标准函数的使用。

(一)数学函数

(1)绝对值函数:Abs(<表达式>)

返回数值表达式的绝对值。如Abs(-100)=100

(2)向下取整函数:Int(<数值表达式>)

返回数值表达式的向下取整数的结果,参数为负值时返回小于等于参数值的第一负数。(www.xing528.com)

(3)取整函数:Fix(<数值表达式>)

返回数位表达式的整数部分,参数为负值时返回大于等于参数值的第一负数。

例如:Int(18.25)=3,Fix(18.25)=18 Int(-18.25)=-19,Fix(-18.25)=-18

(4)四舍五入函数:Round(<数值表达式>[,<表达式>])

按照指定的小数位数进入四舍五入运算的结果。[<表达式>]是进入四舍五入运算小数点右边应保留的位数。

例如:Round(7.255,1)=7.3;Round(7.754,2)=7.75;Round(7.754,0)=8

(5)开平方函数:Sqr(<数值表达式>)

计算数值表达式的平方根。例如:Sqr(100)=10

(6)产生随机数函数:Rnd(<数值表达式>)

产生一个[0,1)之间的随机数,为单精度类型。

例如:Int(100 * Rnd)  ’产生[0,99]的随机整数

Int(101 * Rnd)  ’产生[0,100]的随机整数

(二)字符串函数

(1)字符串检索函数:InStr([Start,] <Strl>,<Str2> [,Compare])

检索子字符串Str2在字符串Strl中最早出现的位置,返回一整型数。Start为可选参数,为数值式,设置检索的起始位置。如省略,从第一个字符开始检索;注意,如果Strl的串长度为零,或Str2表示的串检索不到,则InStr返回0;如果Str2的串长度为零,InStr返回Start的值。

例如:strl =“abcdef” str2 =“bc” s = InStr(strl,str2)  ’返回2

s = InStr(3,“aSsiAB”,“A”,1)’返回5。从字符s开始,检索出字符A

(2)字符串长度检测函数:Len(<字符申表达式>或<变量名>)

返回字符串所含字符数。注意,定长字符,其长度是定义时的长度,和字符串实际值无关。

例如:lenl = Len(“12345”)  ’返回5

len4 = Len(“Access数据库程序设计”) ’返回13

(3)字符串截取函数

Left(<字符串表达式>,<N>):字符串左边起截取N个字符。

Right(<字符串表达式>,<N>):字符串右边起截取N个字符。

Mid(<字符串表达式>,<N1>,[N2]):从字符串左边第N1个字符起截取N2个字符。

例如:strl =“opqrst”

str2 =“计算机等级考试”

str = Left(strl,3)’返回“opq”

str = Left(str2,4)’返回“计算机等”

str = Right(strl,2)’返回“st”

str = Right(str2,2)’返回“考试”

str = Mid(strl,4,2)’返回“rs”

str = Mid(str2,1,3’返回“计算机”

str = Mid(str2,4,)’返回“等级考试”

(4)生成空格字符函数:Space(<数值表达式>)

返回数值表达式的值时指定的空格字符数。

例如:strl = Space(2)  ’返回2个空格字符

(5)大小写转换函数

Ucase(<字符串表达式>):将字符串中小写字母转换成大写字母。

Lcase(<字符串表达式>):将字符串中大写字母转换成小写字母。

例如:strl = Ucase(“StuDENT”)  ’返回“STUDNT”

str2 = Lcase(“StuDENT”)  ’返回“student”

(6)删除空格函数

Ltrim(<字符串表达式>):删除字符串的开始空格。

Rtrim(<字符串表达式>):删除字符串的尾部空格。

Trim(<字符串表达式>):删除字符串的开始和尾部空格。

例如:A =“中国” str1 = Ltrim(A)  ’返回“中国”

   B =”高等教育 ” str2=Rtrim(B) ’返回“高等教育”

   C =”出版社 ” str3=Trim(C) ’返回“出版社”

(三)日期/时间函数

日期/时间函数的功能是处理日期和时间。主要包括以下函数:

(1)获取系统日期和时间函数

Date():返回当前系统日期。

Time():返回当前系统时间。

Now():返回当前系统日期和时间。

例如:D = Date() ’返回系统日期,如2013-10-31

   T = Time() ’返回系统时间,如19:55:50

   DT = Now() ’返回系统日期和时间,如2013-10-31 19:55:50

(2)截取日期分量函数

Year(<表达式>):返回日期表达式年份的整数。

Month(<表达式>):返回日期表达式月份的整数。

Day(<表达式>):返回日期表达式日期的整数。

Weekday(<表达式>[.W]):返回1—7的整数,表示星期几。

Weekday函数中,返回的星期值为星期日为1,星期一为2,以此类推。

(3)截取时间分量函数

Hour(<表达式>):返回时间表达式的小时数(0—23)。

Minute(<表达式>):返回时间表达式的分钟数(0—59)

Second(<表达式>):返回时间表达式的秒数(0—59)。

例如:T = #19:55:50#

HH = Hours(T)  ’返回19

MM = Minute(T)  ’返回55

SS = Second(T)  ’返回50

(4)返回日期函数DateSerial(year,month,day)

D=dateserial(2008,2,29) ’返回#2008-2-29#

D=dateserial(2008-1,8-2,0)’返回#2007-5-31#

Dateserial(year(date()),5,1)’返回当前年的5月1日

Dateserial(year(date())-1,5,1)’返回前一年的5月1日

Dateserial(year(date())+1,5,1)’返回后一年的5月1日

(5)按指定形式返回日期format()

Format(#2010-1-1#,yyyy)返回2010

(四)类型转换函数

(1)字符串转换字符代码函数:Asc(<字符串表达式>)

返回字符串首字符的ASCII值。例如:s = Asc(“abcd”),返回97

(2)字符代码转换字符函数:Chr(<字符代码>)

返回与字符代码相关的字符。例如:s = Chr(66),返回B;s = Chr(13),返回回车符

(3)数字转换成字符串函数:Str(<数值表达式>)

将数值表达式值转换成字符串。注意,当一数字转成字符串时,总会在前头保留一空格来表示正负。

表达式值为正,返回的字符串包含一前导空格表示有一正号。

例如:s = Str(88)  ’返回“88”,有一前导空格

   s = Str(-6) ’返回“-6”

(4)字符串转换成数字函数:Val(<字符串表达式>)

将数字字符串转换成数值型数字。注意,数字串转换时可自动将字符串中的空格、制表符和换行符去掉,当遇到它不能识别为数字的第一个字符时,停止读入字符串。

例如:s = Val(“16”)  ’返回16

   s = Val(“34 5”) ’返回345

   s = Val(“76ABCD”) ’返回76

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈