Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten 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.





Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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