2012-03-23 11 views
13

Quiero ser capaz de inicializar unaVBA: ¿Inicializar objeto con valores?

CArticle tiene las siguientes propiedades:

Private pNumber As String 
Private pQuantity As Double 

ya sea con valores vacíos, pre-definidas o actuales. ¿Cómo puedo conseguir esto? Estoy pensando en algo en la línea de:

Nueva vacío CArticle

pNumber 
pQuantity 

Nueva ficticia CArticle

pNumber 
pQuantity = 99999 

Nueva init CArticle(number, quantity)

pNumber = number 
pQuantity = quantity 
+0

duplicado posible de [pasar argumentos al constructor en VBA] (https://stackoverflow.com/questions/15224113/pass- arguments-to-constructor-in-vba) – Roland

Respuesta

15

Es un dolor en el cuello, pero esta es la única manera de hacerlo.

CArticle Archivo

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 

y en el módulo de llamadas

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

Puede ser útil crear un método 'InitializeFromRange (ByVal r as Range)' para extraer valores de una tabla de la tabla. – ja72

Cuestiones relacionadas