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