Clever-Excel-Forum

Normale Version: Code beschleunigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin zusammen,

Ich lösche mit folgenden Code Zeilen. Allerdings hätte ich gerne das der Code etwas schneller arbeitet. Der Code startet ja ganz unten in der Tabelle. Wie kann ich ihm sagen er soll diese Prüfung ab Zeile 3000 starten? Beschleunigt das überhaupt den Code? 


Code:
Sub loeschen()

With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    .EnableEvents = False
   
End With

Dim loeschen As Double

For loeschen = Cells(Rows.Count, "AK").End(xlUp).Row To 1 Step -1
If Cells(loeschen, 1).Value = "" Then
Rows(loeschen).Delete

End If

Next loeschen

With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
    .EnableEvents = True
   
End With


End Sub
Hallo,

so ginge es schon viel schneller:

Code:
Sub loeschen()

   Dim i As Long
   Dim anfangsZeile As Long
   Dim endZeile As Long
   Dim rngZeilen As Range
   
   anfangsZeile = 5
   endZeile = 10
   
   For i = anfangsZeile To endZeile
      If Cells(i, 1).Value = "" Then
         If rngZeilen Is Nothing Then
            Set rngZeilen = Rows(i)
         Else
            Set rngZeilen = Union(rngZeilen, Rows(i))
         End If
      End If
   Next i
   
   If Not rngZeilen Is Nothing Then rngZeilen.Delete
   
End Sub

anfangsZeile und endZeile musst Du anpassen.
Hallo e...,

ich nehme an, dass es schneller geht, wenn du Excel Standardfunktionalitäten für dich arbeiten lässt. Du kannst im Makro die Daten filtern und diese dann löschen. Beispiele findest du bestimmt bei Tante Goo.
@atilla
that it! 

Nice, danke dir :) Exakt was ich gesucht habe

@ego
der code von atilla klappt klasse und sehr schnell bei 2000 zeilen! Schaue mir aber definitiv die beispiele bei Tante Goo an! Dake auch dir
Hallo elamigo,

ego hat recht.
Es gibt Bordmittel, mit denen geht es auch ratz fatz.

Es gibt in der Symbolleiste den Punkt Suchen und Auswählen, dort kann man in einem ausgewählten Bereich oder einer Spalte Leerzellen auswählen und diese dann in einem Abwasch löschen.

Als Code ist das dann so etwas:

Code:
Sub löschen()
    Range("A5:A15").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub