Code beschleunigen
#1
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
Top
#2
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.
Gruß Atilla
Top
#3
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.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#4
@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
Top
#5
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
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • elamigo
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste