2012-03-23 58 views
13

我希望能够以初始化VBA:用值初始化对象?

CArticle具有下列性质:

Private pNumber As String 
Private pQuantity As Double 

与任一空的,预先定义的值或电流值。我怎样才能做到这一点?我沿线的思考的东西:

新的空CArticle

pNumber 
pQuantity 

新的虚拟CArticle

pNumber 
pQuantity = 99999 

新初始化CArticle(number, quantity)

pNumber = number 
pQuantity = quantity 
+0

的[传递函数参数构造函数,VBA(可能的复制https://stackoverflow.com/questions/15224113/pass- arguments-to-constructor-in-vba) – Roland 2017-10-04 15:36:12

回答

15

它是一个痛苦脖子,但这是做到这一点的唯一方法。

文件CArticle

Option Explicit 

Private pNumber As String 
Private pQuantity As Double 

Private Sub Class_Initialize() 
    pNumber = vbNullString 
    pQuantity = 0 
End Sub 

Public Sub InitializeWithValues(ByVal number As String, ByVal quantity As Double) 
    pNumber = number 
    pQuantity = quantity 
End Sub 

Public Sub InitializeDefaultValues() 
    pNumber = vbNullString 
    pQuantity = 99999 
End Sub 

,并调用模块中

Dim art As New CArticle  ' Initialize value to empty 
art.InitializeWithValues "Bowtie", 100  ' and assign values 

Set art = New CArticle  ' Initialize values to empty 
art.InitializeDefaultValues ' Initialize values to default 
+2

为了从工作表中提取值,创建'InitializeFromRange(ByVal r as Range)'方法可能很有用。 – ja72 2015-01-18 16:03:45