1) Die Membervariable baujahr hat den gleichen Namen wie deren Eigenschaft (Property). Das führt zu einem Namenskonflikt.
In VBA ist es üblich privaten Membervariablen ein m_ voranzustellen. (Namen von Properties beginnen üblichweise mit einem Großbuchstaben)
2)
Public Property Get baujahr() As String
baujahr = baujahr
End Property
Public Property Let baujahr(ByVal newValue As Integer)
baujahr = newValue
End Property
Das Baujahr hast du zuvor als Integer deklariert.
Ein Property hat üblicherweise den gleichen Rückgabetyp wie seine Membervariable.
ZWINGEND ist jedoch, das GET, LET, und SET immer den gleichen Rückgabetyp aufweisen. Bei dir ist das aber nicht der Fall - siehe rote Markierung.
Option Explicit
Private m_Baujahr As Integer
Private m_Farbe As String
Private Sub Class_Initialize()
'Vorbelegte Werte
m_Baujahr = 1997
m_Farbe = "Grün"
End Sub
Public Property Get Baujahr() As Integer
Baujahr = m_Baujahr
End Property
Public Property Let Baujahr(ByVal newValue As Integer)
m_Baujahr = newValue
End Property
Grüße
PS: Auf Modulebene mit Dim deklarierte Variablen (=Membervariablen) am besten mit Private deklarieren - das ist verständlicher beim Lesen.
|