Hallo,
damit das Ganze ohne Kompilierungsfehler durchläuft haben auch keine Anpassungen via Notepad-Editor o.ä. geholfen.
Letzendlich habe ich das wie folgt zum Laufen bekommen:
Modul Modul3:
Option Explicit
Public currentMyTwoObj As New MyTwoObject
Sub Start()
Dim myRuns As New runs
myRuns.moreOneObjects
Stop
End Sub
Klasse init:
Option Explicit
Dim myTwoObjTmp As New MyTwoObject
Public Sub initialize()
Set myTwoObjTmp = myTwoObjTmp.GetMyTwoObject(5, "String")
Set Modul3.currentMyTwoObj = myTwoObjTmp
End Sub
Klasse MyOneObject:
Option Explicit
Public varOne As MyTwoObject
Public varTwo As String
Public varThree As Integer
Public varFour As Boolean
Public varFive As Integer
Public Function GetMyOneObject(ByRef paramOne As MyTwoObject, ByVal paramTwo As String, ByVal paramThree As Integer, ByVal paramFour As Boolean) As MyOneObject
Set GetMyOneObject = Me
Dim varOne As MyTwoObject
Set varOne = paramOne
Me.varTwo = paramTwo 'Mit und ohne "Me." gleiches Ergebnis
Me.varThree = paramThree
Me.varFour = paramFour
'varFive = paramOne.varOne # Fehler paramone ist nicht definiert
End Function
Klasse myTwoObject:
Option Explicit
Public myOneObjCollection As New Collection
Public varOne As Integer
Public varTwo As String
Public Function GetMyTwoObject(vOne As Integer, vTwo As String) As MyTwoObject
Set GetMyTwoObject = Me
Set myOneObjCollection = New Collection
varOne = vOne
varTwo = vTwo
End Function
Public Function addMyOneObj(ByVal myOneObj As MyOneObject) 'Hier führt ByRef zu keiner Veränderung
myOneObjCollection.Add myOneObj
End Function
Klasse runs:
Option Explicit
Public Sub moreOneObjects()
Dim myOneObjTmp As New MyOneObject
Set myOneObjTmp = MyOneObject(Modul3.currentMyTwoObj, "String", 5, True)
Modul3.currentMyTwoObj.addMyOneObj myOneObjTmp
Set myOneObjTmp = Nothing
End Sub
Wie man sehen kann, musste ich in der Klasse myOneObject die Zeile "varFive = paramOne.varOne" auskommentieren. Hier gab es immer ein Laufzeitfehler, da paramOne den Wert NOTHING hat.
Auch im Modul Modul3 habe ich eine Testaufruf Start hinzugefügt, damit das Ganze überhaupt anfing zu laufen.
Entspricht dies so der Ausgangssituation? Falls nicht, wäre es einfacher, wenn Du mir einfach die Excel-Datei via Mail an nospam2016@clh-teltow.de senden kannst.
LG, BigBen
|