Laufzeitfehler 438 bei Klassenobjektübergabe
20.08.2018 17:40:21
Haftenberger
Sub test()
Dim m As Mitglied
Dim t As Teilnehmer
Dim v As Veranstaltung
Set m = Construct.Mitglied("a", "b", "c", "d", "e", "f", "g", "h", "i", "k", "l", "m", "n", _
CDate("1/1/2018"), CDate("1/1/2018"), "o", 1)
Set t = Construct.Teilnehmer(m, 60, CDate("1/1/2018"))
Set v = Construct.Veranstaltung("a", CDate("1/1/2018"), CDate("1/1/2018"), 60, 1)
v.TNanmelden (t)
End Sub
Die Klasse Veranstaltung beinhaltet folgende Methode die das Problem auslöst:Public Sub TNanmelden(t As Teilnehmer)
ReDim Preserve Teilnehmende(UBound(Teilnehmende) + 1)
Set Teilnehmende(0) = t
End Sub
Die Klasse Veranstaltung hat als Atribut: Private Teilnehmende() As TeilnehmerDas Modul Construct enthält die jeweiligen Konstruktoren für die Klassen Teilnehmer, Mitglied und Veranstaltung.Dieser deklariert jeweils die Attribut und initialisiert den array Teilnehmende() als Array mit einem nicht initialisierten Element, sprich Teilnehmende(0)=Nothing
Beim Übergeben des Teilnehmers tritt nun der Laufzeitfehler 438 auf. Lässt man die Argument übergabe weg und erstellt in der Methode selbst einen Teilnehmer, funktioniert alles problemmlos.
Ich bin nicht so erfahren, was Objektorientierte Programierung in VBA angeht. Habe ich etwas vergessen, was man bei der Übergabe von Objekten beachten muss?