Hallo,
ich gehe da mal einen anderen Weg:
ich lege eine Hilfsspalte an, in die ich eine 0 eintrage, wenn die Zeile gelöscht werden soll. In alle anderen Zeilen trage ich die Zeilennummer ein. Dann benutze ich die Exceliinterne Funktion "Duplikate entfernen" um alle Zeilen mit den Nullen zu löschen (eine bleibt dann übrig). Diese Funktion ist ziemlich schnell. Am Schluss lösche ich noch die letzte Zeile mit der 0 und dann selbstverständlich wieder die Hilfsspalte.
Am besten kann man dem Code bei der Arbeit zusehen, wenn man ihn im Einzelschritt ausführt. Dazu auf dem Bildschirm Excel und VisualBasicEditor nebeneinander platzieren und den Curser in das Makro navigieren. Dann mit durch drücken von F8 jede Zeile einzeln ausführen und dabei beobachten, was im Tabellenblatt passiert. Grüße, Ulrich
PS: der code
Sub DeleteG_eq_820()
Dim lLastCol As Long 'Letzte Spalte
Dim lLastRow As Long 'letzte Spalte
Dim rngDel As Range
Application.ScreenUpdating = False
With ActiveSheet
lLastCol = .UsedRange.SpecialCells(xlCellTypeLastCell).Column + 1 'erste freie Zelle
lLastRow = .UsedRange.SpecialCells(xlCellTypeLastCell).Row 'letzte benutzte
.Range(.Cells(1, lLastCol), .Cells(lLastRow, lLastCol)).Formula = "=IFERROR(IF(ABS(820-G1)<0.00000000001,0,ROW()),ROW())"
.Cells.RemoveDuplicates Columns:=lLastCol, Header:=xlNo
With .Columns(lLastCol)
Set rngDel = .Find(0, lookat:=xlWhole, LookIn:=xlValues)
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
.Delete
End With
End With
Application.ScreenUpdating = True
End Sub
|