2013-12-11 60 views
2

我想在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最後一行;即。如果我點了一個水果,除非另有說明,否則默認數量是十幾個。

這是如何實現的?提前致謝!

+2

可能不是你想要什麼(黑鷹的回答是一個很好的方法),但是你也可以使用一個簡單的類,並設置在'Initialize'違約。 –

+0

我同意@TimWilliams一個類對象可能是最好的方法 – engineersmnky

+0

謝謝你的提示,我試圖避免一個類對象,因爲我必須將宏交給那些對VBA的知識相當有限的人。謝謝@Blackhawk,我想我會使用一個函數來設置像你推薦的默認值。 – user2704076

回答

2

除非您願意將其設爲常量,否則最好的方法是讓函數爲您生成「默認」水果。

只是爲了演示const的,下面是有效的,但它當然不能被改變(此不再有效VBA):

Public Type Fruit 
    Name As String 
    Color As String 
    Const Amount As Integer = 12 
End Type 

既然你想有一個默認的,但它必須是修改,我建議使用一個函數來生成一個默認的水果:

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 
+1

我不知道您正在使用哪個版本的VBA,但類型中的Const無效! – tsolina

+0

Type內的Const不起作用,VBA調試器提到了這一點。如果您需要常量,請嘗試使用枚舉:http://www.cpearson.com/excel/Enums.aspx –

+0

@ErikG我添加了免責聲明。但是,由於相關代碼是第二部分,所以答案仍然存在。 – Blackhawk