AW: 'Gleich' scheint doch sehr dehnbar...! ;-) orT
04.07.2013 08:55:36
Klaus
Hallo Nils,
nach ganz grobem drüberschauen, etwa so:
Sub nils12345()
'DropDown 'Was ist das?
zeile = 3
'lz = Sheets("Umsaetze").Cells(Rows.Count, 2).End(xlUp).Row
AktuellerMonat = Sheets("Umsaetze").Range("D1").Value
Application.ScreenUpdating = False
' Erstellen eines neuen Sheets für den aktuellen Monat
ThisWorkbook.Activate
Worksheets("Monatsuebersicht").Copy After:=Worksheets("Umsaetze")
With ActiveSheet
.Name = AktuellerMonat
.Range("A4:E100").ClearContents
End With
' Definition der verschiedenen Spalten im Sheet der Umsätze
With Sheets("Umsaetze")
lz = .Cells(.Rows.Count, 2).End(xlUp).Row
For S = 5 To lz
If Not .Cells(S, 3) = "" Then 'KEIN GOTO!!!!!! Das ist nicht TurboPascal!
Datum = .Cells(S, 1)
VonAn = .Cells(S + 1, 2)
Umsatz = .Cells(S, 3)
Total = .Cells(S, 4)
Zuo = .Cells(S, 5)
' Einträge im Sheet des aktuellen Monats
With Sheets(AktuellerMonat)
.Cells(zeile, 1) = Datum
.Cells(zeile, 2) = VonAn
.Range("C" & zeile).FormulaLocal = Left(Umsatz, Len(Umsatz) - 4)
.Range("D" & zeile).FormulaLocal = Left(Total, Len(Total) - 4)
.Cells(zeile, 5) = Zuo
End With
' Einträge in den jeweiligen Sheets von "Horst", "Peter", "Werner" und "Alle"
With Sheets(Zuo)
lzzuo = .Cells(.Rows.Count, 4).End(xlUp).Row
.Cells(lzzuo + 1, 2) = Datum
.Cells(lzzuo + 1, 3) = VonAn
.Range("D" & lzzuo + 1).FormulaLocal = Left(Umsatz, Len(Umsatz) - 4)
End With
zeile = zeile + 1
End If
Next S
End With
' Summe unter der Betragsspalte im Sheet "Alle"
With Sheets("Alle")
lzzuo = .Cells(.Rows.Count, 4).End(xlUp).Row
.Cells(lzzuo + 1, 4) = WorksheetFunction.Sum(.Range(.Cells(3, 4), .Cells(lzzuo, 4)))
End With
Sheets(AktuellerMonat).Activate
Application.ScreenUpdating = True
End Sub
Ich habe alle Select und Activate entfernt, alle Referenzierungen angepasst und das GOTO rausgeworfen.
Beachte: immer wenn .CELLS oder .RANGE steht, bezieht sich das auf die Tabelle die im WIDTH weiter oben genannt wurde.
Du machst den Fehler, dass du durchgehen rows.count NICHT auf die Tabellen referezierst, das habe ich für dich geändert. Es ist zwar sehr sehr warscheinlich, dass die verschiedenen Tabellen die gleiche Zeilenanzahl haben ... aber halt nicht 100% sicher. Und man sollte alleine aus Prinzip in der Tabelle die Zeilen zählen, in der man mit den Zeilen arbeiten will ... und nicht irgendwo. Du zählst ja auch nicht die Autos deines Nachbarn (eins) und sagst dann: korrekt, ich habe ein Auto! (Obwohl das Ergebniss warscheinlich stimmt).
Grüße,
Klaus M.vdT.