Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

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

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

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige