我想在VBA中定义自定义数据类型,并使用它来创建一些用户定义的常量。例如:
Public Type Person
Name as String
Age as Integer
End Type
Public Sub CreatePerson
Dim singer as Person
singer.Name = "John"
singer.Age = 37
End Sub
我想使singer
保持不变,这在同一模块的其他子程序/函数中是可见的。可能吗?如果不是,那么存储彼此连接的常量值的最佳方法是什么(如上面Name
与Age
连接的示例中所示)?
答案 0 :(得分:3)
我会这样做。
模块中的代码:
Option Explicit
Public Type Person
Name As String
Age As Integer
End Type
Private cvsinger As Person
Public Function singer() As Person
Static ConstantHasBeenSet As Boolean
If Not ConstantHasBeenSet Then
cvsinger.Name = "John"
cvsinger.Age = 37
End If
singer = cvsinger
End Function
Public Sub CreatePerson()
Debug.Print singer.Name, singer.Age
End Sub
这是一个相当简单的情况,但是当找到默认值的代码需要更长的时间来处理使用ConstantHasBeenSet变得有价值时
(请注意,我也会使用类似的技术来设置类中属性的默认值)