Access基础教程--第八章 使用VBA编程

 
本章内容
 
◆ VBA编程基础
◆ 创建和设计 VBA程序
◆ VBA程序调试与运行
 
 
一、 VBA 编程基础知识
 
    在执行简单的操作时,宏可以完成,如窗体的打开与关闭、工具栏的显示和隐藏等。对于稍复杂一些的任务,则可用Visual Basic for Application进行编程完成。
 
1 .VBA的数据类型
 
下面对 VBA中的数据类型、数据类型之间的转换、数据类型的对比进行介绍。
 
⑴ 数据类型
 
下表列出 VBA中的基本数据类型。
 
类型名             声明符 字节  
————————————————
Byte(单字节型)            1   
Integer(整型)     %      2  
Long(长整型)       &      4  
Single(单精度型)   !      4
Double(双精度型)   #      8
Currency(货币型)   @      8
String(字符型)    $     n*1
Boolean(布尔型)           2
Date(日期型)              8
Variant(变体型)           x
Object(对象型)            4
————————————————
其中,字节、整型、长整型、单精度、双精度、货币等数据类型都属于数值数据类型,可以进行各种数学运算。字符型数据类型用来声明字符串。布尔型数据类型用来表示一个逻辑值,为真时显示 True,为假时显示Flase。日期型数据类型用来表示日期,日期常量必须用#括起来,如#2001/3/26#。变体型数据类型可以存放系统定义的任何数据类型,如数值、字符串、布尔及日期等,其数据类型由最近放入的值决定。
 
用户可以使用 Type语句定义任何数据类型。用户自定义数据类型可以包括数据类型数组,或当前定义的用户自定义类型的一种或多种元素。
语法:
[ Private | Public ] Type 类型名
    元素名 As 数据类型
  [ 元素名 As 数据类型 ]
    ……
End Type
 
例如:定义班级中学生的基本情况数据类型如下:
 
Public Type Students
  Name As String(8)
Age  As Integer
End Type
 
声明变量:
 
Dim Student As Students
 
引用数据:
 
Student.Name=”张三 ”
Student.Age=15
 
下面是详细参考内容
 
◆ Boolean 数据类型
Boolean 变量存储为 16 位(2 个字节)的数值形式,但只能是 True 或是 False。Boolean 变量的值显示为 True 或 False(在使用 Print 的时候),或者 #TRUE# 或 #FALSE#(在使用 Write # 的时候)。使用关键字 True 与 False 可将 Boolean 变量赋值为这两个状态中的一个。
当转换其他的数值类型为 Boolean 值时,0 会转成 False,而其他的值则变成 True。当转换 Boolean 值为其他的数据类型时,False 成为 0,而 True 成为 -1。
 
◆ Byte 数据类型
Byte 变量存储为单精度型、无符号整型、 8 位(1个字节)的数值形式,范围在 0 至 255 之间。
Byte 数据类型在存储二进制数据时很有用。
 
◆ Currency 数据类型
Currency 变量存储为 64 位(8 个字节)整型的数值形式,然后除以 10,000 给出一个定点数,其小数点左边有 15 位数字,右边有 4 位数字。这种表示法的范围可以从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807。Currency 的类型声明字符为at号 (@)。
Currency 数据类型在货币计算与定点计算中很有用,在这种场合精度特别重要。
 
◆ Date 数据类型
Date 变量存储为 IEEE 64 位(8 个字节)浮点数值形式,其可以表示的日期范围从 100 年 1 月 1 日到 9999 年 12 月 31 日,而时间可以从 0:00:00 到 23:59:59。任何可辨认的文本日期都可以赋值给 Date 变量。日期文字须以数字符号 (#) 扩起来,例如,#January 1, 1993# 或 #1 Jan 93#。
Date 变量会根据计算机中的短日期格式来显示。时间则根据计算机的时间格式( 12 或 24 小时制)来显示。
当其他的数值类型要转换为 Date 型时,小数点左边的值表示日期信息,而小数点右边的值则表示时间。午夜为 0 而中午为 0.5。负整数表示 1899 年 12 月 30 日之前的日期。
 
◆ Decimal 数据类型
Decimal 变量存储为 96 位(12 个字节)带符号的整型形式,并除以一个 10 的幂数。这个变比因子决定了小数点右面的数字位数,其范围从 0 到 28。变比因子为 0(没有小数位)的情形下,最大的可能值为 +/-79,228,162,514,264,337,593,543,950,335。而在有 28 个小数位的情况下,最大值为 +/-7.9228162514264337593543950335,而最小的非零值为 +/-0.0000000000000000000000000001。
注意 此时, Decimal 数据类型只能在 Variant中使用,也就是说,不能声明一变量为 Decimal 的类型。不过可用 Cdec 函数,创建一个子类型为 Decimal 的 Variant。
 
◆ Double 数据类型
Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式,它的范围在负数的时候是从 -1.79769313486231E308 到 -4.94065645841247E-324,而正数的时候是从 4.94065645841247E-324 到 1.79769313486232E308。Double 的类型声明字符是数字符号 (#)。
 
◆ Integer 数据类型
Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符号 (%)。
也可以用 Integer 变量来表示枚举值。枚举值可包含一个有限集合,该集合包含的元素都是唯一的整数,每一个整数都在它使用时的上下文当中有其特殊意义。枚举值为在已知数量的选项中做出选择提供了一种方便的方法,例如,black = 0,white = 1 等等。较好的编程作法是使用 Const 语句将每个枚举值定义成常数。
 
◆ Long 数据类型
Long(长整型)变量存储为 32 位(4 个字节)有符号的数值形式,其范围从 -2,147,483,648 到 2,147,483,647。Long 的类型声明字符为和号 (&)。
 
◆ Object 数据类型
Object 变量存储为 32 位(4 个字节)的地址形式,其为对象的引用。利用 Set 语句,声明为 Object 的变量可以赋值为任何对象的引用。
注意 虽然以 Object 类型声明的变量足以适应包含对各种对象的引用,但是绑定到变量引用的对象总是在晚期(运行时)绑定。要强迫在早期(编译时间)绑定的话,须将对象的引用赋值给用特定类名称声明的变量。
 
◆ Single 数据类型
Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38。Single 的类型声明字符为感叹号 (!)。
 
◆ String 数据类型
字符串有两种:变长与定长的字符串。
变长字符串最多可包含大约 20 亿 ( 2^31)个字符。
定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。
注意 Public 定长字符串不能在类模块中使用。
String 之字符码的范围是 0 到 255。字符集的前 128 个字符(0 到 127)对应于标准的 U.S. 键盘上的字符与符号。这前 128 个字符与 ASCII 字符集中所定义的相同。后 128 个字符(128 到 255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。String 的类型声明字符为美元号 ($)。
 
◆ 用户定义数据类型
可以是任何用 Type 语句定义的数据类型。用户自定义类型可包含一个或多个某种数据类型的数据元素、数组或一个先前定义的用户自定义类型。例如:
Type MyType
    MyName As String        '定义字符串变量存储一个名字。
    MyBirthDate As Date     '定义日期变量存储一个生日。
    MySex As Integer        '定义整型变量存储性别
End Type                    '( 0 为女,1 为男)
 
◆ Variant 数据类型
Variant 数据类型是所有没被显式声明(用如 Dim、Private、Public 或 Static等语句)为其他类型变量的数据类型。Variant 数据类型并没有类型声明字符。
Variant 是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,可以包含任何种类的数据。Variant 也可以包含 Empty、Error、Nothing 及 Null等特殊值。可以用 VarType 函数或 TypeName 函数来决定如何处理 Variant 中的数据。
数值数据可以是任何整型或实型数,负数时范围从 -1.797693134862315E308 到 -4.94066E-324,正数时则从 4.94066E-324 到 1.797693134862315E308。通常,数值 Variant 数据保持为其 Variant 中原来的数据类型。例如,如果把一个 Integer赋值给 Variant,则接下来的运算会把此 Variant 当成 Integer 来处理。然而,如果算术运数针对含 Byte、Integer、Long 或 Single 之一的Variant 执行,并当结果超过原来数据类型的正常范围时,则在 Variant 中的结果会提升到较大的数据类型。如 Byte 则提升到 Integer,Integer 则提升到 Long,而 Long和Single 则提升为 Double。当 Variant 变量中有 Currency、Decimal 及 Double 值超过它们各自的范围时,会发生错误。
可以用 Variant 数据类型来替换任何数据类型,这样会更有适应性。如果 Variant 变量的内容是数字,它可以用字符串来表示数字或是用它实际的值来表示,这将由上下文来决定,例如:
Dim MyVar As Variant
MyVar = 98052
在前面的例子中, MyVar 内有一实际值为 98052 的数值。像期望的那样,算术运算子可以对 Variant 变量运算,其中包含数值或能被解释为数值的字符串数据。如果用 + 运算子来将 MyVar 与其他含有数字的 Variant 或数值类型的变量相加,结果便是一算术和。
Empty 值用来标记尚未初始化(给定初始值)的 Variant 变量。内含 Empty 的 Variant 在数值的上下文中表示 0,如果是用在字符串的上下文中则表示零长度的字符串 ("")。
不应将 Empty 与 Null 弄混。Null 是表示 Variant 变量确实含有一个无效数据。
在 Variant 中,Error 是用来指示在过程中出现错误时的特殊值。然而,不像对其他种类的错误那样,程序并不产生普通的应用程序级的错误处理。这可以让程序员,或应用程序本身,根据此错误值采取另外的行动。可以用 CVErr 函数将实数转换为错误值来产生 Error 值。
 
⑵ 数据类型之间的转换
 
在进行 VBA编程过程中,用户可以将一种数据类型的数据转换成另一种特定类型的数据。如:
A=Cstr(2000),则将数值转换为字符型数据。下面列出这些转换函数:
 
函数名      目标类型
——————————
Cbyte       Byte
Cint        Integer
Clng        Long
Csng        Single
Cdbl        Double
Ccur        Currency
Cdate       Date
Cvar        Varriant
——————————
 
⑶ 数据类型的对比
 
在 Access中,有4种不同的编辑环境需要用户指定数据类型——表设计视图、查询参数、VBA代码、SQL查询视图。下表列出数据类型与VBA数据类型对比。
 
字段数据类型                     VBA数据类型
——————————————————————
Yes/No                              Boolean
Number(Byte)                        Byte
AutoNumber(Long Integer)            Long
Currency                            Currency
Date/Time                           Date
Number(Double)                      Double
OLE Object                          String
AutoNumber/GVI(同步复制 ID)        不支持 
Memro                               string
Number(Single)                      Single
Number(Integer)                     Integer
Text                                String
Hyper Link                          String
不支持                               Variant
——————————————————————
 
2 .常量
 
定义常量来代替那些固定不变量的数字或字符串,可以提高代码的可读性和可维护性。 VBA中有一部分常量是系统预先定义的,可以直接使用。用户也可以使用自己定义的常量,但在使用之前必须声明,以便分配内存空间。语法如下:
[Public/Private] Const 常量名 [As 数据类型] = 表达式
例如:
Const Pi=3.14159265358979323
Public Const A1 As Integer=6
Const BornDay=#03/23/80#
Private Const A2=”Abcdef258”
 
常量有 3个范围级别:过程级别(在过程中声明的)、私有模块级别(Private)、公共模块级别(Public)。
Access支持 3种类型的常量:
 
◆ 符号常量:需要声明的常数都是符号常量。
◆ 固有常量:是 Access或引用对象库的一部分。
◆ 系统定义常量: True、False、Null。
 
其中,符号常量可以按上述方法声明;系统定义常量只有上述三个。而固有常量则比较复杂一些,它是系统自动定义的,它由应用程序列与控件提供。它采用两种方法来限定常数:通过前缀(如 VBA对象库的常数都以Vb开头,如Vb Tile Horizontal)或通过库应用([Libyan]|[mdul name] Constant)。
用户可以使用对象浏览器来查看所有对象库中的固有常量列表。具体操作如下:
◆ 单击数据库窗口【对象】栏下的【模块】按钮,再单击工具栏中的【代码】按钮,进入模块代码窗口。
◆ 单击代码窗口工具栏中的【对象浏览器】窗口。
◆ 要查看可以使用的常量,在【对象浏览器】窗口中的【工程 /库】下拉列表框中选择【所有库】选项。此时,在窗口的【类】列表框中将显示所有引用对象库中的类。
◆ 在【搜索文字】下拉列表框中输入“ Constant”,然后单击【对象浏览器】工具栏上的【搜索】按钮,则会在【搜索结果】列表框中显示所有固有常量类型。所有的这些固有常量都可以在宏或VBA中使用,用户可以在任何时候,在任何允许使用符号常量或用户自定义常量的地方使用固有常量。
 
Access中主要有以下几种类型的固有常量:操作常量、 DAO常量、事件过程常量、关键字常量、Run Command 方法常量、安全常量、VBA常量和Var Type函数常量。
 
下面是 VBA定义的一些常数,使程序设计变得更为简单。下列常数可在程序代码中的任何地方代替实际值:
◆ Calendar 常数
常数     值 描述
vbCalGreg   0   指出使用的是阳历。
vbCalHijri  1   指出使用的是伊斯兰历法。
 
◆ CallType 常数
常数 值 描述 
vbMethod 1 指出已经调用了一个方法。 
vbGet 2 指出一个 Property Get 过程。
vbLet 4 指出一个 Property Let 过程。 
vbSet 8 指出一个 Property Set 过程。
 
◆ Color 常数
常数 值描述
vbBlack 0x0 黑色
vbRed 0xFF 红色
vbGreen 0xFF00 绿色
vbYellow 0xFFFF 黄色
vbBlue 0xFF0000 蓝色
vbMagenta 0xFF00FF 紫红色
vbCyan 0xFFFF00 青色
vbWhite 0xFFFFFF 白色
 
◆ Compiler 常数
Visual Basic for Applications 定义了一些不能与 #If...Then...#Else 指令一起使用的常数。这些常数除了其范围是全局的;也就是说,除了可在工程中到处应用,在功能上与 #If...Then...#Else 指令定义的常数相同。
在 16 位开发平台上,编译常数定义如下:
 
常数 值描述
Win16 True 指出开发环境是 16 位。
Win32 False 指出开发环境不是 32 位。
 
在 32 位开发平台上,编译常数定义如下:
 
常数 值描述
Vba6  True  指出开发环境是 Visual Basic for Applications, version 6.0。
Vba6  False  指出开发环境不是 Visual Basic for Applications, version 6.0。
Win16 False 指出开发环境不是 16 位。
Win32 True 指出开发环境是 32 位。
Mac False 指出开发环境不是 Macintosh。
Win16 False 指出开发环境不是 16位的。
Win32 False 指出开发环境不是 32位的。
Mac True 指出开发环境是 Macintosh。
注意 这些常数是由 Visual Basic 提供的ÿ
  • 11
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
完整清晰版 PDF ,有目录。共 120MB,分为四个分卷 Access 2007 VBA宝典 OFFICE2007 OFFICE Access 2007 VBA宝典 2/4 作者:(美)费德玛(Feddema,H.) 著,张波,陈江红,苏丽译 出版社:人民邮电出版社 出版日期:2008-6-1 ISBN:9787115175984 字数:843000 页数:473 -------------------------------------------------------------------------------- 使用VBA代码链接Office应用程序   同步Access和Outlook联系人   简化任务并提高生产率。   充分利用Access 2007的全部功能   充分利用Access 2007的全部功能   在各个Microsoft Office应用程序之间无缝地传递Access数据,这只是针对初学者。在这本由知名AcceSS专家HeIen Feddema撰写的全新并且全面的指南中。您可以学习编写Vi-sual Basic代码,从而自动执行Access数据库任务、创建独立脚本、提取及合并数据,而且可以将各种强大的解决方案结合起来,从而提高在Office家族成员间工作时的效率。无论您是初学者还是有经验的用户,本书都是您成功驾驭Access 2007 的必备书籍。   ·在Word、Excel和Outlook之间操作并共享Access数据:   ·从Access创建Word文档;   ·编写VBA代码来自动执行数据库任务;   ·创建Access窗体,作为数据交换的控制面板:   ·使用COM和Access加载项添加功能;   ·使用SQL Server数据:   ·使用XML自定义Access 2007功能区。   在各个Microsoft Office应用程序之间无缝地传递Access数据,这只是针对初学者。在这本由知名Access专家Helen Feddema撰写的全新并且全面的指南中,您可以学习编写Visual Basic代码。从而自动执行Access数据库任务、创建独立脚本、提取及合并数据,而且可以将各种强大的解决方案结合起来,从而提高在Office家族成员间工作时的效率。无论您是初学者还是有经验的用户。本书都是您成功驾驭Access 2007的必备书籍。 内容提要 -------------------------------------------------------------------------------- AccessMicrosoft公司Office办公套件中的数据库应用程序,而Access VBAAccess编程语言。利用VBA不仅能够设计常用的小工具、小软件,还能够编写代码,让很多程序共享数据。本书全面介绍了Access VBA的应用。首先介绍各种Office组件及其用途,然后详细介绍了这些组件,以及如何在组件之间共享各种数据;最后介绍了更为高级的主题,包括VB 6.0、Access加载项、Visual Studio 2005共享加载项、使用XML实现自定义Office 2007功能区,以及与SQL Server数据库的交互等。   本书内容丰富,并且在配套网站上提供了书中所有的示例文件和代码,有助于读者通过亲身实践掌握Access VBA的强大功能。本书适合Office的中高级用户以及希望学习Access VBA的人员参考。 目录 -------------------------------------------------------------------------------- 第1部分 Office组件及其最佳用途  第1章 在Access中存储和显示数据   1.1 Office数据交换简史   1.2 在Access中存储数据   1.3 在Access窗体和报表中显示数据    1.3.1 创建Access套用信函    1.3.2 在Access中创建工作表类型的报表   1.4 小结  第2章 从Access中创建Word文档   2.1 使用TypeText.方法为Word文档填充Access数据   2.2 使用Word模板创建格式化的Word文档    2.2.1 书签    2.2.2 文档属性   2.3 窗体域文档   2.4 小结  第3章 使用Excel分析数据   3.1 将Access数据导出到未格式化的工作表   3.2 使用Excel模板创建填充了Access数据的格式化工作表   3.3 使用VBA代码对Excel工作表进行格式化   3.4 小结  第4章 使用Outlook进行组织和通信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值