本帖最后由 hwc2ycy 于 2013-1-4 22:56 编辑
一、什么是变量
命名的存储位置,包含在程序执行阶段修改的数据。每一变量都有变量名,在其范围内可唯一识别。可以指定数据类型,也可以不这样做。变量名必须以字母字符开头,在同一范围内必须是唯一的,不能超过 255 个字符,而且中间不能包含句点或类型声明字符。(潘多拉的盒子)
二、盒子里能放啥?
文本,对象,数组(甚至还能嵌套)
三、变量的类型和声明
常用的数据类型
数据类型 | 存储空间大小 | 范围 | 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 个字节 | | Double | 8 个字节 | | 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 有相同的范围 |
如何声明
Dim [ WithEvents] varname[ ([ subscripts] )] [ As [ New] type] [ , [ WithEvents] varname[ ([ subscripts] )] [ As [ New] type]] . . .
WithEvents 说明 varname 是一个用来响应由 ActiveX 对象触发的事件的对象变量。只有在类模块中才是合法的。使用 WithEvents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组。New 和 WithEvents 不能一起使用。
New 可隐式地创建对象的关键字
如果定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将该引用对象的变量赋值为一个已有对象。在该变量被赋值之前,所声明的对象变量有一个特定值 Nothing,这个值表示该变量没有指向任一个对象实例。
如果不指定数据类型或对象类型,且在模块中没有 Deftype 语句,则该变量按缺省设置是 Variant 类型。当初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。 Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。 注意 当在过程中使用 Dim 语句时,通常将 Dim 语句放在过程的开始处(不做强制要求)。
在模块级别中用 Dim 声明的变量,对该模块中的所有过程都是可用的。在过程级别中声明的变量,只在过程内是可用的。 - ‘Dim 语句示例
- ’该示例演示使用 Dim 语句来声明变量,也演示了用 Dim 语句来声明数组。数组的缺省下界为 0,可以在模块级使用 Option Base 语句来取代数组的缺省下界。
- 'AnyValue 和 MyValue 按缺省情况被声明为 Variant,
- '同时值被设为 Empty。
- Dim AnyValue, MyValue
- '显式声明一个 Integer 类型的变量。
- Dim Number As Integer
- '在一行中声明多个变量。AnotherVar 为 Variant 类型,
- '因为它的类型被省略了。
- Dim AnotherVar, Choice As Boolean, BirthDate As Date
- 'DayArray 是一个有 51 个索引(从 0 到 50)元素的 Variant 数组,
- '假设在当前模块中 Option Base 被设为 0(缺省设置)。
- Dim DayArray(50)
- 'Matrix 是一个二维 Integer 数组。
- Dim Matrix(3, 4) As Integer
- 'MyMatrix 是一个显式指定了上下界
- '的三维 double 数组。
- Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double
- 'BirthDay 是一个索引从 1 到 10 的 date 数组。
- Dim BirthDay(1 To 10) As Date
- 'MyArray 是一个 variant 动态数组。
- Dim MyArray()
复制代码
四、变量的生存周期
1 过程级变量:过程结束,变量值释放
2 模块级变量:变量的值只在本模块中保持,工作簿关闭时随时释放
3 全局级变量: 在所有的模块中都可以调用,值会保存到EXCEL关闭时才会被释放
|