Betrifft: Rückwärtsschleife wird nicht durchlaufen
von: Marc
Geschrieben am: 16.09.2019 12:15:15
Hallo liebe Forumsgemeinde,
in folgendem Code möchte ich Einträge in einer Liste löschen mit Hilfe von Werten, die ich zuvor in einem Array festgehalten habe. Damit ich die Zeilennummern durch die Löschung nicht anpassen muss möchte ich die Schleife vom letzten Eintrag im Array zum ersten laufen lassen, also die Listeneinträge beim Letzten Eintrag beginnend löschen.
Merkwürdigerweise ignoriert das Makro aber meine For next Schleife für y (Schleife 2):
Public Sub Eraser(ByVal Referenz As String, ByVal EntryNr As Long, ByVal Endrow As Long, ByVal _
SpaltenIndex As Integer, ByVal Spalte2Index As Integer, ByVal Betrag As Currency)
Dim j As Long
Dim Nextlog As Long
Dim Payments As Integer ' Hilfsvariable, falls eine Forderung durch mehrere Zahlungen geklärt _
wurde
Payments = 0
Dim tArray() As Long
ReDim tArray(Payments)
tArray(Payments) = EntryNr - 1
' Abgleich & Kumulation der gefunden Einträge
For j = EntryNr To Endrow
If Restanten.Cells(j, SpaltenIndex).Value = Referenz Then
Betrag = Betrag + Restanten.Cells(j, Spalte2Index).Value
Payments = Payments + 1
ReDim Preserve tArray(Payments)
tArray(Payments) = j
Else
End If
Next j
''''''''''' Übertrag ins Logsheet
If Logsheet.Range("A1").Value = "" Then Logsheet.Range("A1").Value = "Logdaten:" ' Erste Zeile _
füllen da es sonst Probleme beim Ablauf gibt
' Kopieren der Einträge ins Logsheet
If Betrag = 0 Then
'Schleife 1 - Kopieren
For x = 0 To Payments
Nextlog = Logsheet.UsedRange.Rows.Count + 1 ' Nächste freie Zeile im Logsheet ermitteln
Restanten.Rows(tArray(x)).Copy Logsheet.Rows(Nextlog)
Next x
'Schleife 2 - Löschen
For y = Payments To 0 ' (Vom Letzten zum Ersten Eintrag damit die Zeilnummern durch die Lö _
schung nicht geändert werden müssen.)
Restanten.Rows(tArray(y)).Delete
Next y
Else
End If
End Sub
Sobald das Makro bei der Schleife ankommt springt es einfach zu EndIf und fährt fort.
Weiß jemand woran das liegt?
VG,
Marc
Betrifft: AW: Rückwärtsschleife wird nicht durchlaufen
von: 1713278.html
Geschrieben am: 16.09.2019 12:23:02
Hi
Evtl. so?
For y = Payments To 0 step -1
nicht getestet!
Betrifft: AW: Rückwärtsschleife wird nicht durchlaufen
von: 1713279.html
Geschrieben am: 16.09.2019 12:24:19
Moin!
Du musst bei einer SChleife auch die Richtung angeben und die Schrittweite. Wenn nicht, nimmt Excel immer +1. Das heißt es wird bei jedem Durchlauf um 1 hochgezählt.
Bei dir sollte der Schleifenkopf so aussehen:
For y = Payments To 0 step -1