Du musst darauf achten, ineinander verschachtelte Blöcke auch wieder in umgekehrter Reihenfolge zu schließen.
Das bedeutet hier konkret: Zuerst geht With auf, dann geht For auf.
Also geht zuerst For zu und danach dann With zu (bei dir war das genau verdreht).
Außerdem solltest du diese Zeilen mit Select herausnehmen, die kosten nur unnötig Abarbeitungszeit (in der Masse - also bei vielen Aufrufen - wird das schnell mal ekelhaft).
Option Explicit 'Variablendeklaration erzwingen (hauptsächlich um Tippfehlern vorzubeugen)
Sub Aufraeumen()
'zu nutzende Variablen deklarieren
Dim i As Long
'innerhalb des nachfolgenden Blocks jeweils auf das angegebene Tabellenblatt beziehen - insofern gewollt
'(wenn gewollt, dann steht vor der Objektreferenz jeweils ein Punkt - siehe z.B. ".Cells", weiter unten)
With ThisWorkbook.Worksheets("Kennzahlen")
'durchläuft alle Zellen (ohne Titelzeile)
For i = .Cells(.Rows.Count, "A").End(xlUp).Row To 2 Step -1
'Wenn in Spalte A kein "K" steht
'oder wenn in in Spalte C zwei bestimmte Ausdrücke stehen, dann ...
If Not .Cells(i, "A").Value Like "*K*" _
Or .Cells(i, "C").Value Like "*Tagnoo*"
Or .Cells(i, "C").Value Like "*Tdg*" _
Then
'... Zeile löschen
.Rows(i).Delete Shift:=xlShiftUp
End If
'Spalte NaT löschen
.Columns("nicht abgerechnete Transporte").Delete Shift:=xlToLeft
Next
End With
'Spalte Flotte einfügen
Worksheets("Hilfe").Copy
Worksheets("Kennzahlen").Columns("C:C").Insert Shift:=xlShiftToRight
'den autom. eingeblendeten (animierten) Kopier-Rahmen von Excel deaktivieren
Application.CutCopyMode = False
End Sub
|