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

2018-11-26 21:27

#014

2. VBA 简介 17

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

#015 Sub ByRefTest(var As Long) #016 var = var * 2 #017 End Sub

不过和变量不同,如果没有使用 Public、Private 显式指定,Sub 过程按缺省情况就是 公用的(Public),因此一定要注意把不打算公开的过程定义为私有的。 所有的可执行代码都必须属于某个过程。不能在别的过程中定义 Sub 过程。

Exit Sub 语句使执行立即从一个 Sub 过程中退出。程序接着从调用该 Sub 过程的语 句下一条语句执行。在 Sub 过程的任何位置都可以有 Exit Sub 语句。

在 Sub 过程中使用的变量分为两类:一类是在过程内显式定义的,另一类则不是。 在过程内显式定义的变量(使用 Dim 方法)都是局部变量(参加数据类型一节)。 过程(包括函数等)的创建可以通过在代码窗口直接键入“Sub…”来创建,也可以 使用菜单的“插入 - 过程”对话框来创建。

2.2.3. 函数

函数是具有返回值的过程,其正式描述如下:

[Public | Private][Static] Function name [(arglist)] [As type] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function

各部分含义同Sub 过程相同,在此不在重复。需要说明的是,函数要返回一个值,其 类型通过在定义时通过As Type 来定义,要从函数返回一个值,只需将该值赋给函数名。 在过程的任意位置都可以出现这种赋值。如果没有对 name 赋值,则过程将返回一个缺省 值:数值函数返回0,字符串函数返回一个零长度字符串 (\,Variant 函数则返回Empty。 如果在返回对象引用的Function 过程中没有将对象引用赋给name(通过 Set),则函数返 回Nothing。

VBA 中有大量内置函数,例如前边例子里使用过的MsgBox,InputBox。VBA 的函数

主要包括数学函数(包括三角函数、随机数等)、字符串函数等等,熟悉VBA 的内置函数

可以提高工作效率,更好的完成工作。对于VBA 的函数,可以参考其帮助文档。

2. VBA 简介 18

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

2.2.4. 调用过程和函数

从其它过程调用一个过程(Sub)时,必须键入过程名称以及任何需要的参数值。Call 语句可有可无,如果使用它,则参数必须以括号括起来。

可以使用 Sub 过程去组织其它的过程。在下面的示例中,Sub 过程Main 传递参数值 56 去调用Sub 过程MultiBeep(第2 行)。运行MultiBeep 后,控件返回Main,然后Main 调用Sub 过程Message(第3 行)。Message 显示一个信息框;当按“确定”键时,控件会 返回Main,接着Main 退出执行。 #001 Sub Main() #002 MultiBeep 56 #003 Message #004 End Sub #005

#006 Sub MultiBeep(numbeeps) #007 For counter = 1 To numbeeps #008 Beep #009 Next counter #010 End Sub #011

#012 Sub Message()

#013 MsgBox \#014 End Sub

下面的示例展示了调用具有多个参数的Sub 过程的两种不同方法。当第二次调用 HouseCalc 时,因为使用Call 语句(第3 行),所以需要利用括号将参数括起来。 #001 Sub Main()

#002 HouseCalc 99800, 43100

#003 Call HouseCalc(380950, 49500) #004 End Sub #005

#006 Sub HouseCalc(price As Single, wage As Single) #007 If 2.5 * wage <= 0.8 * price Then #008 MsgBox \#009 Else

#010 MsgBox \#011 End If #012 End Sub

在调用函数(Function)时,为了使用函数的返回值,必须指定函数给变量,并且用 括号将参数封闭起来;如下示例所示:

2. VBA 简介 19

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

Answer3 = MsgBox(\

如果不在意函数的返回值,可以用调用 Sub 过程的方式来调用函数。如下面示例所 示,可以省略括号,列出参数并且不要将函数指定给变量: MsgBox \

如果在上述例子中包含括号,则语句会导致一个语法错误。

2.3. 数据类型与变量

2.3.1. 常量和变量

变量用于保存在程序运行过程中需要临时保存的值或对象,变量具有不同的类型,例

如整型、浮点型(见后节),变量可能包含不同的数值,在程序运行时,变量的数值可以改 变。而当需要存储静态信息时,可以使用常量。使用常量有两个原因,(1)常量可以存放 数值供程序运行时多次引用而不改变;(2)使用常量可以增加程序的可读性,例如BookTitle 比“Excel 与VBA 程序设计”要容易记忆和修改。 定义变量可以使用 Dim 语句: Dim 变量名 As 数据类型

变量的名称变量名必须以字母开始,并且只能包含字母、数字和特定的特殊字符,不

能包含空格、句号、惊叹号,也不能包括字符@、&、$和#。名字最大长度为255 字符。 在 Dim 语句中不必提供数据类型。如果没有提供数据类型,变量将被指定为Variant

类型,因为VBA 中默认的数据类型是Variant。一般应该明确指定数据类型,因为这样程 序可读性更强;Variant 类型一般来说,要占用更多空间(16 字节),运行速度也会更慢一 些(根据不同数据类型,从基本无差别到大概慢0.5~1 倍6)。对于模块级别的变量,可以 使用Public、Private 来定义(见上节)。

变量定义中要特别注意的一个问题是,VBA 的变量定义,每个变量之后必须加“As 数 据类型”,例如: Dim i As Long, j As Long 而不可以这样:

6 本书所涉及的效率和速度快慢的说明虽然也参考了大量资料,但所有数据都经过笔者的测试,测试方法

见“其他话题”一章的“提高效率的一些建议”一节,一般都经过3-5 次测试,取平均结果。 2. VBA 简介 20

Excel 与VBA 程序设计 Copyright ? 2005 马维峰 Dim i, j As Long

这样,只有j 是Long 型,i 为__________Variant 型。

要声明常量并设定常量的值,需要使用 Const 语句。常量声明后,不能对它赋一个新 的数值。例如,假设需要声明一个常量来保存书本价格,可以使用如下语句: Const BOOKPRICE As Long = 23.50

可以在Const 语句中可以指定数据类型。常量的命名惯例是全部字母都用大写,这样 就容易区分代码中的变量和常量。

在 VBA 中,赋值表达式使用的是“=”,和比较表达式相同,可以通过表达式给变量 赋值,如果表达式左右两侧的数据类型不同,VBA 会尝试进行自动数据类型转换,如果无 法转换,会发生一个类型不匹配的运行时错误。例如运行如下程序代码,第一和第二个对 话框(5 和7 行)都可以显示,但第8 行的赋值会产生一个类型不匹配的运行时错误。 #001 Sub TestType() #002

#003 Dim i As Long #004 i = 1 #005 MsgBox i #006 i = 12.12 #007 MsgBox i #008 i = \#009 MsgBox i

#010

#011 End Sub

2.3.2. 数据类型

数据类型,指变量的特性,用来决定可保存何种数据。数据类型包括 Byte、Boolean、 Integer、Long、Currency、Decimal、Single、Double、Date、String、Object、Variant(默认) 和用户定义类型等。

表 2-3 显示所支持的数据类型,以及存储空间大小与范围。 表 2-3 VBA 的数据类型、存储空间大小、数值范围

数据类型 存储空间大小 范围 Byte 1 个字节 0 到 255

Boolean 2 个字节 True 或 False Integer 2 个字节 -32,768 到 32,767 2. VBA 简介 21

Excel 与VBA 程序设计 Copyright ? 2005 马维峰 Long (长整型)

4 个字节 -2,147,483,648 到 2,147,483,647 Single

(单精度浮点型)

4 个字节 负数时从 -3.402823E38 到 -1.401298E-45;正数时从 1.401298E-45 到 3.402823E38 Double

(双精度浮点型)

8 个字节 负数时从 -1.79769313486231E308 到 -4.94065645841247E-324;正数时从

4.94065645841247E-324 到 1.79769313486232E308 Currency (变比整型)

8 个字节 从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807 Decimal 14 个字节 没有小数点时为

+/-79,228,162,514,264,337,593,543,950,335,而小数点右 边有 28 位数时为 +/-7.9228162514264337593543950335; 最小的非零值为 +/-0.0000000000000000000000000001 Date 8 个字节 100 年 1 月 1 日 到 9999 年 12 月 31 日 Object 4 个字节 任何 Object 引用 String (变长) 10 字节加字符 串长度

0 到大约 20 亿


Excel与VBA程序设计(mini)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:201509学期C语言程序设计作业1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: