VBA自定义数据类型-默认值



我想在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工程中,这将是一个更清晰的解决方案,而不是使用类型。

最新更新