Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1948|回复: 2

跟着校长学VBA之第5集:变量的声明和使用

[复制链接]
发表于 2013-1-4 16:01 | 显示全部楼层 |阅读模式
本帖最后由 hwc2ycy 于 2013-1-4 22:56 编辑

一、什么是变量
命名的存储位置,包含在程序执行阶段修改的数据。每一变量都有变量名,在其范围内可唯一识别。可以指定数据类型,也可以不这样做。变量名必须以字母字符开头,在同一范围内必须是唯一的,不能超过 255 个字符,而且中间不能包含句点或类型声明字符。(潘多拉的盒子)

二、盒子里能放啥?
文本,对象,数组(甚至还能嵌套)

三、变量的类型和声明
常用的数据类型
数据类型存储空间大小范围
Byte1 个字节0 到 255
Boolean2 个字节True 或 False
Integer 2 个字节-32,768 到 32,767
Long4 个字节-2,147,483,648 到 2,147,483,647
Single4 个字节
Double8 个字节
Date8 个字节100 年 1 月 1 日 到 9999 年 12 月 31 日
Object4 个字节任何 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 声明的变量,对该模块中的所有过程都是可用的。在过程级别中声明的变量,只在过程内是可用的。
  1. ‘Dim 语句示例
  2. ’该示例演示使用 Dim 语句来声明变量,也演示了用 Dim 语句来声明数组。数组的缺省下界为 0,可以在模块级使用 Option Base 语句来取代数组的缺省下界。

  3. 'AnyValue 和 MyValue 按缺省情况被声明为 Variant,
  4. '同时值被设为 Empty。
  5. Dim AnyValue, MyValue

  6. '显式声明一个 Integer 类型的变量。
  7. Dim Number As Integer

  8. '在一行中声明多个变量。AnotherVar 为 Variant 类型,
  9. '因为它的类型被省略了。
  10. Dim AnotherVar, Choice As Boolean, BirthDate As Date

  11. 'DayArray 是一个有 51 个索引(从 0 到 50)元素的 Variant 数组,
  12. '假设在当前模块中 Option Base 被设为 0(缺省设置)。
  13. Dim DayArray(50)

  14. 'Matrix 是一个二维 Integer 数组。
  15. Dim Matrix(3, 4) As Integer

  16. 'MyMatrix 是一个显式指定了上下界
  17. '的三维 double 数组。
  18. Dim MyMatrix(1 To 5,  4 To 9,  3 To 5) As Double

  19. 'BirthDay 是一个索引从 1 到 10 的 date 数组。
  20. Dim BirthDay(1 To 10) As Date        

  21. 'MyArray 是一个 variant 动态数组。
  22. Dim MyArray()
复制代码

四、变量的生存周期
   
1 过程级变量:过程结束,变量值释放
2 模块级变量:变量的值只在本模块中保持,工作簿关闭时随时释放
3 全局级变量: 在所有的模块中都可以调用,值会保存到EXCEL关闭时才会被释放
发表于 2013-1-4 17:14 | 显示全部楼层
回复

使用道具 举报

发表于 2013-1-4 19:43 | 显示全部楼层
学习心得啊                           
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-16 03:03 , Processed in 0.160515 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表