For Each Next Schleife
04.07.2006 05:35:34
Oliver
In einer Datei werden alle Ausgaben auf einem Arbeitsblatt("Gesamt") zeilenweise erfasst.In Spalte "D" steht das Kuerzel des Buchungskontos, dem sie zuzuordnen sind. Mit einem Button kann man mit Hilfe einer Userform neue Konten erstellen, wobei bei diesem Vorgang immer ein neues Arbeitsblatt, das das Kontokuerzel als Name hat, erstellt. Mit Hilfe des folgenden Makros sollen dann die Ausgaben von der Gesamtaufstellung auf die einzelnen Konten aufgeteilt werden (Kriterium ist hierfuer das Kuerzel in Spalte "D")
Sub buchen()
Application.ScreenUpdating = False
Dim wks As Worksheet
Dim name As Variant
For Each wks In ActiveWorkbook.Worksheets
If wks.name <> "Gesamt" Then
name = wks.name
wks.Range("a4:f300").Clear
For i = 3 To Sheets("Gesamt").UsedRange.Rows.Count
Cells(i, 4).Select
If ActiveCell.Value = name Then
wks.Cells((i + 1), 2).Value = Sheets("Gesamt").Cells(i, 1).Value
wks.Cells((i + 1), 3).Value = Sheets("Gesamt").Cells(i, 2).Value
wks.Cells((i + 1), 4).Value = Sheets("Gesamt").Cells(i, 3).Value
wks.Cells((i + 1), 5).Value = Sheets("Gesamt").Cells(i, 6).Value
wks.Cells((i + 1), 6).Value = Sheets("Gesamt").Cells(i, 7).Value
wks.Cells((i + 1), 1).Value = "=row()-3"
Else
End If
Next i
wks.Range("a1:N300").Columns.AutoFit
Else
End If
Next wks
Application.ScreenUpdating = True
End Sub
...das Makro soll alle Arbeitsblaetter durchgehen, erst den gesamten Bereich loeschen (da das Makro regelmaessig ausgefuehrt wird und keine Doppelbuchungen auftreten sollen) und dann alle Eintraege, die dem Kriterium (Kuerzel) entsprechen uebernehmen.Das klappt auch, allerdings werden auch Eintraege auf dem Sheet "Gesamt" geloescht(nur einzelne)bzw. ueberschrieben.Warum?Muss an der Logik liegen, aber an selbiger haperts ja manchmal, wenn man zulange exelt.
Zusatzfrage:Im selben Schritt moechte ich dann die Zeilen "zusammenraffen",d.h. allen Blaettern die leeren Zeilen,die durch das Makro (s.o.) entstehen, loeschen.Mit einer For Each Next Schleife klappt das nicht wirklich gut (es bleiben leere Zeilen bestehen.
Gruss und Danke im Voraus!
Oliver