erste Tests mit einfachem Klassenmodul
02.06.2017 22:31:57
Florian
Ich mache derweil meine ersten Gehversuche mit Klassenmodulen.
Hierzu habe ich folgende Klasse erstellt:
'Klassenmodul cls1
Option Explicit
Public Angriffe As String
Public Duchschnitt As Long
Public ID As Long
Public Orden As String
Public Name As String
Public lvl As Long
Nun möchte ich mithilfe dieser Klasse Daten aus einem Tabellenblatt in eine Collection schmeißen und mittels Debug.Print wieder ausgeben.Das Modul hierfür sieht folgendermaßen aus:
'normales Modul
Option Explicit
Sub Makro1()
Dim oDaten As New cls1
Dim coll As New Collection
Dim i As Long
Dim letztezeile As Long
With ThisWorkbook.Worksheets("Farm")
letztezeile = .Cells(Rows.Count, 5).End(xlUp).Row
For i = 2 To letztezeile
oDaten.Angriffe = .Cells(i, 1)
oDaten.Duchschnitt = .Cells(i, 2)
oDaten.ID = .Cells(i, 3)
oDaten.Orden = .Cells(i, 4)
oDaten.Name = .Cells(i, 5)
oDaten.lvl = .Cells(i, 6)
coll.Add oDaten
Next
End With
For Each oDaten In coll
Debug.Print oDaten.Angriffe & " " & oDaten.Duchschnitt & " " & oDaten.Name
Next
End Sub
Jedoch druckt mir die For Each Schleife mehrmals den selben Listeneintrag aus.Dies habe ich im Lokalfenster beobachtet.
Beim ersten Durchlauf der For Schleife wird korrekt in die Collection geschrieben.
Beim zweiten Durchlauf wird dann der zweite Eintrag vorgenommen.
Hierbei wird jedoch der erste Eintrag überschrieben.
Jedes mal, wenn das Objekt oDaten mit Daten zugewiesen wird, werden die Einträge in der Collection überschrieben.
Warum ist das so? Ich finde den Fehler nicht.
Anzeige