Hallo,
ich möchte gerne in einem Excel Makro ein Array von eigenen Objekten ansprechen. Zur Veranschaulichung habe ich eine vereinfachte Version meines Problems geschrieben:
Main Sub:
Klassenmodul Auto:
Klassenmodul Bauteil:
Ich habe auch versucht in der "Class_Initialize" der Auto-Klasse allen Arrayeinträgen einen neuen Wert zuzuweisen.
Selbst wenn ich in "abc" mit den auskommentierten Zeilen die Arrayitems initialisiere, fliegt er dort mit dem Laufzeitfehler 91 raus. Nutze ich statt der "Bauteil"-Klasse einen String, funktioniert der Code so, wie er oben steht problemlos.
Kann mir jemand auf die Sprünge helfen, wo mein Fehler liegt?
Vielen Dank und viele Grüße
eldrior
edit: Ich habe die Idee gehabt das ganze mit einer Collection zu machen. Das hätte den Vorteil, dass ich einfach drauf zugreifen kann, aber meines Wissens ist eine Collection nicht editierbar und ich muss nachträglich Werte in der Collection ändern. Ich würde es also nach möglichkeit gerne vermeiden gezwungen zu werden Objekte aus der Collection zu löschen und neu reinzuschreiben, wenn ich etwas ändern muss, daher bin ich bei einem Array.
ich möchte gerne in einem Excel Makro ein Array von eigenen Objekten ansprechen. Zur Veranschaulichung habe ich eine vereinfachte Version meines Problems geschrieben:
Main Sub:
Visual Basic-Quellcode
- Sub abc()
- MsgBox "Sub startet"
- Dim a As Auto
- Set a = New Auto
- MsgBox "a erstellt"
- a.hersteller = "Audi"
- MsgBox "Hersteller: " + a.hersteller
- 'Bis hier treten keine Probleme auf
- 'Set a.Teile(1) = New Auto
- 'Set a.Teile(2) = New Auto
- 'Set a.Teile(3) = New Auto
- a.Teile(1).text = "Rad"
- a.Teile(2).text = "Bremse"
- a.Teile(3).text = "Tür"
- 'Hier kommt er nicht mehr hin.
- 'Laufzeitfehler 91
- MsgBox a.Teile(3)
- End Sub
Klassenmodul Auto:
Visual Basic-Quellcode
Klassenmodul Bauteil:
Ich habe auch versucht in der "Class_Initialize" der Auto-Klasse allen Arrayeinträgen einen neuen Wert zuzuweisen.
Selbst wenn ich in "abc" mit den auskommentierten Zeilen die Arrayitems initialisiere, fliegt er dort mit dem Laufzeitfehler 91 raus. Nutze ich statt der "Bauteil"-Klasse einen String, funktioniert der Code so, wie er oben steht problemlos.
Kann mir jemand auf die Sprünge helfen, wo mein Fehler liegt?
Vielen Dank und viele Grüße
eldrior
edit: Ich habe die Idee gehabt das ganze mit einer Collection zu machen. Das hätte den Vorteil, dass ich einfach drauf zugreifen kann, aber meines Wissens ist eine Collection nicht editierbar und ich muss nachträglich Werte in der Collection ändern. Ich würde es also nach möglichkeit gerne vermeiden gezwungen zu werden Objekte aus der Collection zu löschen und neu reinzuschreiben, wenn ich etwas ändern muss, daher bin ich bei einem Array.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „eldrior“ ()