Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Leere Zellen löschen sehr langsam

Leere Zellen löschen sehr langsam
11.03.2014 13:04:35
Tobias
Hallo zusammen!
Ich habe eine Range aus der ich alle leeren Zellen löschen möchte. Ich bewerkstellige das zur Zeit mit folgendem Code:
Application.ScreenUpdating = False
For i = letzte2 To 4 Step -1
For j = 2 To 17
If tab6.Cells(i, j) = "" Then
tab6.Cells(i, j).Delete shift:=xlUp
End If
Next j
Next i
Application.ScreenUpdating = True
Bei einer kleinen Range funktioniert das noch, wenn es aber etwas umfrangreicher wird (12x1000) wird der Code extrem langsam bis zum Absturz. Könnte mir vielleicht jemand dabei helfen den Code zu optimieren, so dass er schneller wird?
Viele Grüße
Rüdi

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leere Zellen löschen sehr langsam
11.03.2014 13:17:25
MatthiasG
Hallo Rüdi,
Du könntest noch die automatische Berechnung abschalten:

Dim old_stat As Long
old_stat = Application.Calculation
Application.Calculation = xlCalculationManual
... dein Code
Application.Calculation = old_stat

Gruß Matthias

Anzeige
AW: Leere Zellen löschen sehr langsam
11.03.2014 13:20:09
Klaus
Hallo Rüdi,
ich würd das so machen: Einen Autofilter über den Bereich legen, nach "" filtern, dann mit
Range(?).SpecialCells(xlCellTypeVisible).EntireRow.delete den gesamten Bereich auf einmal löschen (statt in der Schleife) und den Autofilter wieder aufheben. Bekommst du vielleicht mit dem Rekorder selber hin.
Falls nicht, lad eine kleine Musterdatei hoch.
Grüße,
Klaus M.vdT.

Anzeige
AW: Leere Zellen löschen sehr langsam
11.03.2014 13:18:34
UweD
Hallo
wenn viele Formeln im Blatt sind hilft das vorrübergehende Ausschalten der automatischen Berechnung...
also anstelle nur ScreenUpdating aus/einzuschalten besser so...
Dim stCalc%
'*** bescheunigt das Makro
With Application
.ScreenUpdating = False
stCalc = .Calculation
.Calculation = xlCalculationManual
End With
'...... Dein Code
'*** Rücksetzen
With Application
.ScreenUpdating = True
If .Calculation  stCalc Then .Calculation = stCalc
End With
End Sub

Anzeige
AW: Leere Zellen löschen sehr langsam
11.03.2014 14:50:57
Tobias
Hallo, ich habe jetzt einiges versucht:

'*** bescheunigt das Makro
With Application
.ScreenUpdating = False
stCalc = .Calculation
.Calculation = xlCalculationManual
End With
With tab6
.activate
.Range(.Cells(4, 2), .Cells(letzte2, 17)).Select
Set Rng = Selection.SpecialCells(xlCellTypeBlanks)
If Not Rng Is Nothing Then
Rng.Delete shift:=xlUp
End If
End With
'*** Rücksetzen
With Application
.ScreenUpdating = True
If .Calculation  stCalc Then .Calculation = stCalc
End With
und

'*** bescheunigt das Makro
With Application
.ScreenUpdating = False
stCalc = .Calculation
.Calculation = xlCalculationManual
End With
Dim rDel As Range
Set rDel = Nothing
Application.ScreenUpdating = False
For i = Letzte2 To 4 Step -1
For j = 2 To 17
If tab6.Cells(i, j) = "" Then
If rDel Is Nothing Then
Set rDel = tab6.Cells(i, j)
Else
Set rDel = Union(rDel, tab6.Cells(i, j))
End If
End If
Next j
Next i
If Not rDel Is Nothing Then
rDel.Delete shift:=xlUp
End If
Application.ScreenUpdating = True
'*** Rücksetzen
With Application
.ScreenUpdating = True
If .Calculation  stCalc Then .Calculation = stCalc
End With
Es ist immer noch extrem langsam. Was meine Vermutung ist: In den befüllten Zellen steht sehr viel Text drin. Kann es sein, dass sich Excel bei obrigen Checks den ganzen Text in der Zelle anguckt? Wäre es möglich das bei dem Check abgebrochen wird, sobald Character.Count >0 ist? Ich kann mir nur vorstellen, dass es damit was zutun hat, zum Teil stehen in den Zellen Texte drin, die mehr als 1000 Zeichen haben. (Ich weiss natürlich, dass Excel kein Textprogramm ist, aber Aufgabe ist Aufgabe. )
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige