VBA 自定义数据类型
前面我们介绍VBA提供的类型,接下来我们定义自己的类型,包括:Type 类型、Enum类型。
1 Type
Type类型可以定义多个变量,即把多个变量封装在一起,类似于类中包含多个属性。
Type类型中不能包含过程与函数。
Type类型变量同时拥有类型中定义的多个变量。
Type类型声明
Type 类型名称
变量1 As 数据类型1
变量2 As 数据类型2
…
变量n As 数据类型n
End Type
示例。声明学生Type类型,其中包含:Id、姓名、生日。
' type类型
Private Type Student
Id As Integer
Name As String
Birth As Date
End Type
Type类型变量的声明与访问
Sub main3()
Dim s1 As Student
s1.Id = 1
s1.Name = "张三"
s1.Birth = Date
Debug.Print "ID:" & s1.Id & ",Name:" & s1.Name & ",birth:" & s1.Birth
End Sub
Student类型的一个变量s1同时拥有三个数据:Id、Name、Birth。访问更加简单。
输出结果:
ID:1,Name:张三,birth:2023/6/13
2 Enum
Enum类型用于定义枚举类型。枚举类型中包含多个成员(也称枚举名称),每个成员(枚举名称)对应一个枚举值。
枚举类型变量的值只能为其中一个成员。
枚举类型的优点:当有多个成员时,通过见名思义的成员名称来访问,提高代码的可读性。
声明枚举类型
Enum 枚举类型名称
成员1
成员2
…
成员n
End Enum
其中枚举类型名称中包含:成员1、成员2…成员n。
示例如下。声明颜色类型,包含红、蓝、绿三个成员。
Enum Color
RED
GREEN
BLUE
End Enum
声明与访问枚举类型变量
Sub main1()
'声明枚举类型变量
Dim c1, c2, c3 As Color
'枚举变量赋值
c1 = Color.RED
c2 = Color.GREEN
c3 = Color.BLUE
'打印枚举变量
Debug.Print "c1:" & c1
Debug.Print "c2:" & c2
Debug.Print "c3:" & c3
End Sub
输出结果:
c1:0
c2:1
c3:2
声明枚举类型时,虽然没有为成员赋值,但默认为赋值,按顺序依次为0、1、2…
也可以在声明枚举类型时为变量赋值。
声明如下。
Enum Color2
RED = 100
GREEN = 200
BLUE = 300
End Enum
枚举类型变量的声明与访问如下
Sub main2()
'声明枚举类型变量
Dim c1, c2, c3 As Color2
'枚举变量赋值
c1 = Color2.RED
c2 = Color2.GREEN
c3 = Color2.BLUE
'打印枚举变量
Debug.Print "c1:" & c1
Debug.Print "c2:" & c2
Debug.Print "c3:" & c3
End Sub
输出结果:
c1:100
c2:200
c3:300