VBA静态变量与常量 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

VBA代码中包含变量、运算符和语句,

VBA静态变量与常量

。变量在代码中起到互交与连接的作用。变量从创建为合适的对象与数据类型,到初始化,再通过运算符计算或执行语句修改,来完成整个互交的过程。

声明变量的关键词是Dim,其语法是

Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . . .

Dim语句的语法包含下面部分:

部分 描述

WithEvents 可选的。关键字,说明 varname 是一个用来响应由ActiveX 对象触发的事件的对象变量。只有在类模块中才是合法的。使用WithEvents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组。New 和 WithEvents 不能一起使用。

varname 必需的。变量的名称;遵循标准的变量命名约定。

subscripts 可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:

[lower To] upper [, [lower To] upper] . . .

如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有使用Option Base 语句,则下界为 0。

New 可选的。可隐式地创建对象的关键字。如果使用 New 来声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来给该对象引用赋值。New 关键字不能声明任何内部数据类型的变量,以及从属对象的实例,也不能与 WithEvents 一起使用。

type 可选的。变量的数据类型;可以是 Byte、 Boolean 、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length (对定长的字符串)、Object、Variant、用户定义类型、或对象类型。所声明的每个变量都要一个单独的 As type 子句。

而在声明变量或创建变量的同时,最好先考虑好变量用什么数据类型,下面 表格显示所支持的数据类型,以及存储空间大小与范围。

数据类型 存储空间大小 范围

Byte 1 个字节 0 到 255

Boolean 2 个字节 True 或 False

Integer 2 个字节 -32,768 到 32,767

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 亿

String

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

Variant

(数字) 16 个字节 任何数字值,最大可达 Double 的范围

Variant

(字符) 22 个字节加字符串长度 与变长 String 有相同的范围

用户自定义

(利用 Type) 所有元素所需数目 每个元素的范围与它本身的数据类型的范围相同,

电脑资料

VBA静态变量与常量》(https://www.unjs.com)。

其中的Variant是个很特殊的数据类型,它能表示除固定长度之外的所有值,并可以通过VarType来返回其数据子类型。其语法如下:

VarType(varname)

必要的 varname 参数是一个 Variant,包含用户定义类型变量之外的任何变量。

下面这个表表示VarType返回的值的意义:

常数 值 描述

vbEmpty 0 Empty(未初始化)

vbNull 1 Null(无有效数据)

vbInteger 2 整数

vbLong 3 长整数

vbSingle 4 单精度浮点数

vbDouble 5 双精度浮点数

vbCurrency 6 货币值

vbDate 7 日期

vbString 8 字符串

vbObject 9 对象

vbError 10 错误值

vbBoolean 11 Boolean 值

vbVariant 12 Variant(只与变体中的数组一起使用)

vbDataObject 13 数据访问对象

vbDecimal 14 十进制值

vbByte 17 位值

vbUserDefinedType 36 包含用户定义类型的变量

vbArray 8192 数组

变量因声明的位置与使用Public或Private关键字,其有效范围可能为3种:过程范围、模块范围与全局范围。当变量放在模块头部,并使用Public代替Dim时,这个变量就是全局变量;而如果是用Dim或者用Private代替Dim时,这个变量是模块级变量;而当变量在过程中声明就是过程变量了。

通常的过程变量在过程结束后值是不保存,但如果子程序使用Static语句,或者用Static声明的过程变量是例外的,下面用两个实例说明一下。

Static Sub ExcelbaSub2()

Dim X As Integer

MsgBox "X = " & X

X = X + 1

End Sub

Sub ExcelbaSub3()

Static Y As Integer

MsgBox "Y = " & Y

Y = Y + 1

End Sub

运行上面的过程,你就比较容易理解Static的用途了。

除了变量,我们还经常用到一些常量,包含系统定义与自定义的常量。常量与变量有很多相似之处,但常量的值是保持不变的,如果代码中常常出现一个数值,最好的方法就是定义成常量,这样既使代码易于编写,也让代码容易阅读。定义常量的关键词是Const,其语法是:

语法

[Public | Private] Const constname [As type] = expression

其中的expression就是常量的值,其它与变量相同,就不重复了。

最新文章