一、数据类型
数据类型是指数据以何种方式储存在内存中。
a) VBA的数据类型
数据类型 存储空间大小 范围
Byte 1个字节 0-255
Boolean 2个字节 true或false
Integer 2个字节 -32768-32767
Long 4个字节 很大
Single(单精度浮点型) 4个字节 很大
Double(双精度浮点型) 8个字节 很大
Currency(变比整型) 8个字节 很大
Decimal 14个字节 很大
Date 8 日期类型
Object 4 任何Object调用
String(变长) 10 0-40亿
String(定长) 字符串长度 很大
Variant(数字) 16 最大达到Double
Variant(字符) 22+字符串长度 与变长String相同范围
b) 数据类型的声明和转换
数据类型不区分大小写。如果不指定类型 默认类型指定为variant变体量
声明:Dim a as Byte Dim i
转换:TypeName(值) 返回指定的类型名
类型转化的函数列表
函数 返回类型 参数范围
CBool Bollean 任何有效的字符串数值表达式
CByte Byte 0-255
CCur Currency 很大
CDate Date 任何有效日期表达式
CDbl Double 很大
CDec Decimal 很大
CInt Integer 小数部分四舍五入
CLng logn 很大
CSng Single 很大
CStr String 依据expression参数返回CStr
CVar Variant 若为数值,为Double,若不为数值,则为String
二、常量与变量
a) 常量声明
[public | private] Const 变量名 [As type] =值
Public 可选 该关键字用于在模块级别中声明在所有模块中对所有过程都可以使用的常量,在过程中声明常量不能使用public
Private 可选 该关键字用于在模块级声明智能在包含该声明的模块中使用的常数,不能在过程中使用
值是必须的
b) 变量声明
声明方式:Dim public private Static
Dim [WithEvents] 变量名[([subscripts])][As [New] type], [WithEvents] 变量名[([subscripts])] [As [New] type]
Dim参数说明
WithEvents 可选的,声明变量名是一个用来相应右Activex对象触发的事件的对象变量,只有在类模块中才是合法的
Subscripts 可选,数据变量的维数,最多可定义60维的多维数组
New 可选,可隐式的创建对象的关键字,如何使用New来声明对象变量,则在第一次引用该变量时将新建该对象的实例,银次不必使用Set语句来给该对象引用赋值。New关键字不能与WithEvents一起使用
c) 区分静态变量和动态变量
动态变量则声明是Dim 变量名 as type
静态变量则声明是static 变量名 as type
静态不变。等模块复位或重新启动。 动态则可在过程结束后释放其值
d) 变量的作用域和生命周期
i. 变量的作用域
作用域 声明方式
当前过程 Dim或static声明
当前模块 本模块内第一个过程前用Dim或者private声明
所有模块 在模块中第一个过程前用public声明
ii. 对象变量
Let方法 用于对对象以的变量赋值 是可选参数,可省略
Set方法 对对象变量进行赋值 必选参数
如果为对象变量赋null
Set A=nothing
例如:
ActieWorkbook.Sheets(“Sheet2”).Range(“A10”).Font.Name=”黑体”
可改为
Dim rng As Range
Set rng= ActieWorkbook.Sheets(“Sheet2”).Range(“A10”)
Rng.Font.Name=”黑体”
iii. 数组
声明方式与其他变量一样,可以使用Dim public private Static 数组通常需要指定大小,数组的大小被指定后,则是个固定大小数组,若程序运行时数组的大小可以改变,则它是个动态数组