我想在VBA中定义一个自定义数据类型,并为属性指定一个默认值。
示例:
Public Type Fruit
Name as String
Color as String
Amount as Integer 'Default 12
End Type
Public Sub UseFruit
Dim Banana as Fruit
Banana.Name = "Banana"
Banana.Color = "Yellow"
Debug.Print Banana.Amount
End Sub
我想在潜艇的最后一行打印12;例如,如果我调水果,除非我另有规定,否则默认金额为12。
如何才能做到这一点?提前感谢!
除非你愿意让它成为Const,否则最好的方法是让一个函数为你生成"默认"的Fruit。
为了演示Const,以下内容是有效的,当然不能更改(这不再是有效的VBA):
Public Type Fruit
Name As String
Color As String
Const Amount As Integer = 12
End Type
既然你想要一个默认值,但它必须是可修改的,我建议使用一个函数来生成一个默认的Fruit:
Public Type Fruit
Name As String
Color As String
Amount As Integer
End Type
Public Sub UseFruit()
Dim Banana As Fruit
Banana = getDefaultFruit
Banana.Name = "Banana"
Banana.Color = "Yellow"
Debug.Print Banana.Amount 'Prints 12
End Sub
Public Function getDefaultFruit() As Fruit
getDefaultFruit.Amount = 12 'Default 12
End Function
另一种方法是使用类模块而不是类型声明。
在名为水果的类别中
Public Name as String
Public Color as String
Public Amount as Integer
Private Sub Class_Initialize()
Amount = 12
end sub
在模块中
Public Sub UseFruit()
Dim Banana as New Fruit
Banana.Name = "Banana"
Banana.Color = "Yellow"
Debug.Print Banana.Amount
End Sub
在一个有许多子和函数的模块或更大的VBA工程中,这将是一个更清晰的解决方案,而不是使用类型。