Ok dann versuche ich mal meine Vorstellungen hier so zu beschreiben das (ich hoffe ) keine Unklarheiten mehr übrig bleiben.
Ich habe eine Exceltabelle mit ca. 30 Tabellenblättern.
In jedem Tabellenblatt werden pro Tabellenblatt Daten zusammengefasst und über Formeln errechnet,
diese Berechnungen und Zellenverweise befinden sich immer am gleichen Ort der 30 tabellenblätter ( Zelle A120 bis F130)
In meiner Übersicht, das Tabellenblatt "SAP" soll nun wenn in einem oder mehreren Tabellenblättern (ausser "SAP") in der Zeile 120, Spalte E und Oder F eine Zahl größer Null steht die ganze Zeile in die Übersicht "SAP" übertragen (nur Werte / keine Formeln)werden.
Das unten angehängte Script kopiert zwar, aber falsch! Kenne mich nicht so gut aus deswegen suche ich hier Hilfe.
Sub Abrechnungsammeln()
Dim WS As Worksheet
Dim WSz As Worksheet
Dim Zeile As Long
Dim i As Long
Dim n As Long
On Error GoTo ENDE
Application.ScreenUpdating = False
Set WSz = Worksheets("SAP")
n = 3 'Startzeile in "SAP"
WSz.Range(n & ":" & WSz.Rows.Count).Clear
For Each WS In ThisWorkbook.Worksheets
With WS
Select Case .Name
Case "SAP" 'hier die Tabellen eintragen die nicht berücksichtigt werden
Case Else
If Not IsEmpty(.UsedRange) Then
For Zeile = 120 To .Cells.Find("*", , , , xlByRows, xlPrevious).Row
If .Cells(Zeile, 5) > 0 Or .Cells(Zeile, 6) > 0 Then
.Rows(Zeile).Copy
WSz.Cells(n, 1).PasteSpecial (xlPasteValuesAndNumberFormats)
n = n + 1
End If
Next Zeile
End If
End Select
End With
Next
Application.CutCopyMode = False
ENDE:
Application.ScreenUpdating = True
If Err Then MsgBox Err.Description, , "Fehler: " & Err
End Sub
|