77范文网 - 专业文章范例文档资料分享平台

Excel与VBA程序设计(mini)(5)

来源:网络收集 时间:2018-11-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

String (定长)

字符串长度 1 到大约 65,400 Variant (数字)

16 个字节 任何数字值,最大可达 Double 的范围 Variant (字符) 22 个字节加字 符串长度

与变长 String 有相同的范围 用户自定义 (利用 Type) 所有元素所需 数目

每个元素的范围与它本身的数据类型的范围相同。

当使用 Variant 数据类型的时候,VBA 会根据实际需要将数据转换为特定的数据类型, 但有时VBA 的自动转换并不正确,就需要使用类型转换函数。类型转换函数可以如下方 式使用:

bResult = CBool(expression)

其中expression 参数可以是任何字符串表达式或数值表达式,类型转换函数的类型和 使用说明见表 2-4,如果参数超出可以接受的范围会导致一个运行时错误。 表 2-4 VBA 的类型转换函数及其说明

函数 返回类型 expression 参数范围

CBool Boolean 任何有效的字符串或数值表达式。 CByte Byte 0 至 255。

CCur Currency -922,337,203,685,477.5808 至922,337,203,685,477.5807。 CDate Date 任何有效的日期表达式。

CDbl Double 负数从 -1.79769313486231E308 至 -4.94065645841247E-324;正数从 2. VBA 简介 22

Excel 与VBA 程序设计 Copyright ? 2005 马维峰 4.94065645841247E-324 至 1.79769313486232E308。 CDec Decimal 零变比数值,即无小数位数值,为

+/-79,228,162,514,264,337,593,543,950,335。对于 28 位小数的数值,范 围则为+/-7.9228162514264337593543950335;最小的可能非零值是 0.0000000000000000000000000001。

CInt Integer -32,768 至 32,767,小数部分四舍五入。

CLng Long -2,147,483,648 至 2,147,483,647,小数部分四舍五入。

CSng Single 负数为 -3.402823E38 至 -1.401298E-45 ; 正数为 1.401298E-45 至 3.402823E38。

CStr String 依据expression 参数返回 Cstr。

CVar Variant 若为数值,则范围与Double 相同;若不为数值,则范围与String 相同。 很多资料和书籍会告诉读者不要使用 Variant 类型,因为速度和空间占用。笔者也推荐

显式定义数据类型,但原因不是因为速度,而是程序的清晰和可读性。

Variant 代表Integer 类型时,速度慢50%,但作为Double 的Variant 类型,速度没有什 么差别,作为Currency 类型的Variant 类型,速度有些时候还要快一些。

2.3.3. 运算符

VBA 中的运算符有以下几类运算符:

1. 算术运算符,用来进行数学计算的运算符; 2. 比较运算符,用来进行比较的运算符; 3. 连接运算符,用来合并字符串的运算符; 4. 逻辑运算符,用来执行逻辑运算的运算符。

逻辑运算符和比较运算符将在介绍条件语句时介绍,连接运算符在介绍字符串时做介 绍,本小节只介绍算术运算符。 算术运算符有以下运算符:

1. ^ 运算符:求一个数字的某次方,如A^B; 2. * 运算符:乘法运算; 3. / 运算符:除法运算;

4. \\ 运算符:对两个数作除法并返回一个整数; 5. Mod 运算符:求两数的余数; 6. + 运算符:加法运算;

2. VBA 简介 23

Excel 与VBA 程序设计 Copyright ? 2005 马维峰

7. - 运算符:减法运算。

当一个表达式牵扯到多个运算符时,就必须考虑运算符的优先顺序。运算符的优先顺 序是指在一个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求解, 称这个顺序为运算符的优先顺序。

在表达式中,当运算符不止一种时,要先处理算术运算符,接着处理比较运算符,然 后再处理逻辑运算符。所有比较运算符的优先顺序都相同;也就是说,要按它们出现的顺 序从左到右进行处理。而算术运算符和逻辑运算符则必须按下列优先顺序(由上至下)进 行处理(表 2-5)。可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的 运算总是优先于括号外的运算。但是,在括号之内,运算符的优先顺序不变。 表 2-5 运算符的优先顺序

算术 比较 逻辑

指数运算 (^) 相等 (=) Not 负数 (–) 不等 (<>) And 乘法和除法 (*、/) 小于 (<) Or 整数除法 (\\) 大于 (>) Xor

求模运算 (Mod) 小于或相等 (<=) Eqv 加法和减法 (+、–) 大于或相等 (>=) Imp 字符串连接 (&) Like Is

2.3.4. 数组

数组是具有相同数据类型并且共享同一个名字的一组变量的集合。数组中的元素通过 索引数字加以区分。定义数组的语法如下: Dim ArrayName(n) As Type

Dim ArrayName(a to b) As Type

其中n、a、b 是数组中的元素的数目。n 表示数组元素为0 到n,共n+1 个,a 表示数 组元素最小索引为a,最大为b,元素个数为(b-a+1)个。

例如,如果要创建保存 10 个学生名字的数组,可以使用如下语句: Dim strStudents(9) As String

注意,括号中的数字是9 而不是10。这是因为在默认情况下,第一个索引数字是0。

数组在处理相似信息时非常有用。假设需要处理15 门考试成绩,可以创建15 个独立的变 量,也可以创建一个数组来保存考试成绩,具体语句如下:

2. VBA 简介 24

Excel 与VBA 程序设计 Copyright ? 2005 马维峰

Dim iTestScores(14) As Integer

大多数情况下,可以使用像上面例子中类似的一维数组。VBA 也支持多维数组。可以 认为二维数组和工作表或者表格具有相似的结构。要创建4×4 的数组,可以使用如下语句: Dim iTable(3,3) As Integer

声明数组时的另一种选择是不给定大小。这样,当程序开始运行时,就具有定义数组 大小的灵活性。如果声明数组时没有给定大小,就成为动态数组。声明动态数组的语法如 下:

Dim DynamicArray() As Type

例如,你的应用程序让用户创建一张表格,可以提示用户确定要创建的表格的行和列 的数目。通过创建动态数组就可以做到这样,甚至还可以使用户在创建完表格(实际上是 数组)后对改变行或列的维数。

对数组进行声明后,可以在运行时用 ReDim 语句重新指定数组的大小: ReDim DynamicArray(size)

参数size 代表数组的新大小。如果要保留数组的数值,请在ReDim 语句后使用关键字 Preserve,具体语法如下:

ReDim Preserve DynamicArray(size)

任何数据类型的数组都需要20 个字节的内存空间,加上每一数组维数占4 个字节,再 加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大 小加以计算。例如,以4 个2 字节之 Integer 数据元所组成的一维数组中的数据,占8 个 字节。这8 个字节加上额外的24 个字节,使得这个数组所需总内存空间为32 个字节。包 含一数组的Variant 比单独的一个数组需要多 12 个字节。

2.3.5. 自定义数据类型

在模块中可以使用 Type 关键字定义包含一个或多个元素的用户自定义的数据类型。语 法如下:

[Private | Public] Type varname

elementname [([subscripts])] As type [elementname [([subscripts])] As type] … … End Type

其中各关键字和前文说明一致。用户自定义类型可包含一个或多个某种数据类型的数

2. VBA 简介 25

Excel 与VBA 程序设计 Copyright ? 2005 马维峰

据元素、数组或一个先前定义的用户自定义类型,一般用于表示数据记录,记录一般由多 个不同数据类型的元素组成。例如: Type MyType

MyName As String '定义字符串变量存储一个名字。 MyBirthDate As Date '定义日期变量存储一个生日。 MySex As Integer '定义整型变量存储性别 End Type

Type 语句只能在模块级使用。使用Type 语句声明了一个用户自定义类型后,就可以 在该声明范围内的任何位置声明该类型的变量。可以使用Dim、Private、Public、ReDim 或Static 来声明用户自定义类型的变量。需要说明的是,在标准模块中,用户自定义类型 按缺省设置是公用的,可以使用Private 关键字来改变其可见性;而在类模块中,用户自定 义类型只能是私有的,且使用Public 关键字也不能改变其可见性。

2.3.6. 枚举类型

在 Offfice 和Excel 对象模型中,有一类常量称为枚举常量,如表示目前操作系统的

XlPlatform 枚举常量,其包含3 个常量xlMacintosh、xlMSDOS、xlWindows,在代码中可 以如下使用: XlPlatform.xlWindows

一方面易于记忆,并可以使用代码窗口的自动完成功能。我们也可以用Enum 语句自 定义枚举变量。变量和参数都可以定义为Enum 类型。Enum 类型中的元素被初始化为Enum 语句中指定的常数值。所赋给的值可以包括正数和负数,且在运行时不能改变。例如: Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0

SecurityLevel2 = 1 End Enum

Enum 语句只能在模块级别中出现,可以定义为Private 类型或者Public 类型。定义

Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定 Enum 类型。类模块中的Public Enum 类型并不是该类的成员;只不过它们也被写入到类型 库中。在标准模块中定义的Enum 类型则不写到类型库中。具有相同名字的Public Enum 类 型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同 的类型库中有两个Enum 类型的名字相同,但成员不同,则对这种类型的变量的引用,将

2. VBA 简介 26

Excel 与VBA 程序设计 Copyright ? 2005 马维峰

取决于哪一个类型库具有更高的引用优先级。 例如,可以定义如下的枚举变量: #001 Public Enum MyColors #002 icMistyRose = &HE1E4FF& #003 icSlateGray = &H908070& #004 icDodgerBlue = &HFF901E& #005 icDeepSkyBlue = &HFFBF00& #006 icSpringGreen = &H7FFF00& #007 icForestGreen = &H228B22& #008 icGoldenrod = &H20A5DA& #009 icFirebrick = &H2222B2& #010 End Enum

然后,在代码中,我们就可以使用此枚举变量: #001 Sub MyTest()

#002 PrintColor (icForestGreen) #003 End Sub #004

#005 Sub PrintColor(color As MyColors)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Excel与VBA程序设计(mini)(5)在线全文阅读。

Excel与VBA程序设计(mini)(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/310399.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: