Schleife vereinfachen
Holger
wie kann ich das nachfolgende Code-Ungetüm vereinfachen?
Auf den Blatt s2a stehen chronologisch sortiert Beträge. In Spalte B steht immer das Datum, in Spalte D die positiven Beträge und in Spalte E die negativen Beträge (aber ohne Vorzeichen). Pro Zeile gibt es immer nur ein Betrag, entweder in Spalte D oder in E.
Der Code soll jetzt alle Beträge Pro Tag der Spalte D summieren, dann die Beträge der Spalte E Abziehen und ein Tagessaldo (wenn negativ, dann mit Vorzeichen) auf Blatt s2c ausgeben. Dann den nächsten Tag u.s.w.
Sub Tagsumme()
'Der nachfolgende Teil summiert die Einzelbuchungen vom Tabellenblatt (s2a) und gibt die
'Tagessummen auf dem Tabellenblatt (s2c) aus.
Dim s2a$, s2c$, a, b, e
s2a = "Import"
s2c = "Tagessalden"
a = 1
e = 1
Anweisung1:
b = 0
On Error GoTo Anweisung2
While Worksheets(s2a).Cells(a, 2) = Worksheets(s2a).Cells(a + 1, 2)
b = b + Worksheets(s2a).Cells(a, 4) - Worksheets(s2a).Cells(a, 5)
Worksheets(s2c).Cells(e, 1) = Worksheets(s2a).Cells(a, 2)
Worksheets(s2c).Cells(e, 2) = b
a = a + 1
Wend
If Worksheets(s2a).Cells(a, 2) = Worksheets(s2a).Cells(a - 1, 2) Then
b = b + Worksheets(s2a).Cells(a, 4) - Worksheets(s2a).Cells(a, 5)
Worksheets(s2c).Cells(e, 1) = Worksheets(s2a).Cells(a, 2)
Worksheets(s2c).Cells(e, 2) = b
End If
If Worksheets(s2a).Cells(a, 2) Worksheets(s2a).Cells(a - 1, 2) And _
Worksheets(s2a).Cells(a, 2) Worksheets(s2a).Cells(a + 1, 2) Then
b = b + Worksheets(s2a).Cells(a, 5) - Worksheets(s2a).Cells(a, 6)
Worksheets(s2c).Cells(e, 1) = Worksheets(s2a).Cells(a, 2)
Worksheets(s2c).Cells(e, 2) = b
End If
e = e + 1
a = a + 1
If Worksheets(s2a).Cells(a, 2) "" Then GoTo Anweisung1
MsgBox ("Die Berechnung ist jetzt fertig")
Sheets(s2b).Select
Range("A1").Select
Application.ScreenUpdating = True
Exit Sub
Anweisung2:
MsgBox ("Es ist ein Fehler aufgetreten! Bitte überprüfen Sie das Makro")
End Sub
Gruß Holger