一、基本数据类型
VBA提供了8种基本数据类型,分别是:
数据类型 存储空间 存储范围
Byte 1字节 0 到 255
Integer 2字节 -32,768 到 32,767
Long 4字节 -2,147,483,648 到 2,147,483,647
Single 4字节 -3.402823E38 到 -1.401298E-45 for negative values; 1.401298E-45 到 3.402823E38 for positive values
Double 8字节 -1.79769313486232E308 到 -4.94065645841247E-324 for negative values; 4.94065645841247E-324 到 1.79769313486232E308 for positive values
Currency 8字节 -922,337,203,685,477.5808 到 922,337,203,685,477.5807
Date 8字节 January 1, 100 到 December 31, 9999
Boolean 2字节 True 或 False
其中,Byte、Integer、Long、Single、Double和Boolean类型都是基本数据类型;Currency和Date类型则是较为特殊的数据类型。
二、常量与变量
在VBA中,我们可以使用常量和变量来存储数据。常量是指一旦声明就不能修改的值,变量则是可以被修改的值。以下是声明常量和变量的语法:
'声明一个常量
Const 常量名 As 数据类型 = 值
'声明一个变量
Dim 变量名 As 数据类型
常量和变量名的命名规则与其他语言相同,可以使用字母、数字和下划线,但是必须以字母开头,不能使用空格和特殊字符。在使用变量之前,需要先为其分配存储空间,这可以通过为变量赋值来完成。例如:
'声明并初始化一个变量
Dim age As Integer
age = 18
'声明并初始化一个常量
Const PI As Double = 3.1415926
三、数据类型转换
在VBA中,可以使用函数进行数据类型转换,以下是一些常用的数据类型转换函数:
'将字符串转换为数值类型
CInt("123") '返回整数类型
CDbl("3.14") '返回浮点类型
'将数值类型转换为字符串
CStr(123) '返回字符串类型
'将布尔类型转换为整数
CInt(True) '返回1
CInt(False) '返回0
需要注意的是,在进行数据类型转换的时候,需要确保转换后的数据类型可以存储转换前的数据。如果数据类型无法存储原始数据,则会发生溢出错误。
四、数组
在VBA中,可以使用数组来存储一组相关的数据。数组可以是一维的,也可以是多维的。以下是一维数组的声明方法:
'声明一个一维数组
Dim arr(3) As Integer
'为数组元素赋值
arr(0) = 1
arr(1) = 2
arr(2) = 3
arr(3) = 4
'访问数组元素
MsgBox arr(0) '输出1
MsgBox arr(3) '输出4
以下是多维数组的声明方法:
'声明一个二维数组
Dim arr(2, 2) As Integer
'为数组元素赋值
arr(0, 0) = 1
arr(0, 1) = 2
arr(1, 0) = 3
arr(1, 1) = 4
'访问数组元素
MsgBox arr(0, 0) '输出1
MsgBox arr(1, 1) '输出4
五、对象
在VBA中,一切都是对象。对象可以是Excel工作簿、工作表、单元格等。可以使用对象、属性和方法对这些对象进行操作。以下是一个使用对象的例子:
'打开一个新工作簿
Dim wb As Workbook
Set wb = Workbooks.Add
'在第一个工作表中写入数据
wb.Worksheets(1).Range("A1").Value = "Hello World"
'保存工作簿
wb.SaveAs "C:\Temp\test.xlsx"
'关闭工作簿
wb.Close
需要注意的是,使用对象操作时需要确保对象已经被正确初始化。如果对象没有被初始化,则会发生错误。
六、枚举
枚举是一种特殊的数据类型,其值是一组已命名的常量,可以用来增强代码的可读性。以下是一个使用枚举的例子:
'声明一个枚举
Enum WeekDay
Sunday = 1
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
End Enum
'使用枚举
Dim day As WeekDay
day = WeekDay.Sunday
'输出枚举值
MsgBox "今天是星期" & day '输出“今天是星期日”
在枚举中,第一个枚举值默认为0,后面的枚举值依次递增1。可以为枚举值指定特定数值,如上例中的Sunday=1。枚举值的名称习惯上使用大写字母。