Beschleunigung - Löschen Daten



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Beschleunigung - Löschen Daten
von: Thomas
Geschrieben am: 09.07.2002 - 10:38:59

Liebes Forum!

Wieder mal eine Bitte. Ich habe ein Sheet mit mehreren Spalten. Wenn die letzte Spalte nicht leer ist dann soll diese gelöscht werden. Nur ab einer bestimmten Zeilenanzahl wird das ganze ziemlich langsam. Gibt es eine Möglichkeit der Beschleunigung?

Mein Code:

n = Sheets("ERGEBNIS").Range("A1").CurrentRegion.Rows.Count

For i = 2 To n

If Range("J" & i).Value <> "" Then
Range("A" & i & ":J" & i).Delete
i = i - 1
End If

'If Cells(i, 10).Value <> "" Then
'Rows(i & ":" & i).Delete
'i = i - 1
'End If
Next

Die 2 If-Variante wäre die Lösung über Cells - geht aber leider auch nicht schneller.
Bin wieder mal über jede Hilfe dankbar.

LG
Thomas

nach oben   nach unten

Re: Beschleunigung - Löschen Daten
von: @lex
Geschrieben am: 09.07.2002 - 10:50:10

Hallo Thomas !
Zunächst einmal vermute ich, dass nicht Spalten sondern Zeilen gelöscht werden sollen. Richtig ?
Zu Deinem Code.
In solchen Fällen würde ich den Zähler von oben nach unten laufen lassen und ein ScreenUpdating = False setzen
Danach müsste es schneller gehen.


Sub Test()
Application.ScreenUpdating = False

Dim iRow, iCount As Integer
    iRow = Sheets(2).Range("A1").CurrentRegion.Rows.Count

For iCount = n To Step -1
    If Cells(i, 10).Value <> "" Then Range("A" & i & ":J" & i).Delete
Next iCount
End Sub

PS: Ich würde zu Beginn immer die Variabeln dimensionieren und um den Überblick zu behalten immer ein Typenkürzel vorab stellen (siehe Beispiel)
Macht es bei längeren Codes einfacher.

VG,
Alex

nach oben   nach unten

Re: Beschleunigung - Löschen Daten
von: Thomas
Geschrieben am: 09.07.2002 - 10:58:49

Vielen Dank fürs ScreenUpdating.

Läuft jetzt rascher.

Thomas grüßt


nach oben   nach unten

Re: Beschleunigung - Löschen Daten
von: MRR
Geschrieben am: 09.07.2002 - 11:09:36

Hi Thomas,
auch wenn Du schon eine Lösung hast: Hier ist eine m.E. noch schnellere. Ichhabsmal mit 2000 Zeilen getestet es scheint mir schneller zu sein.

Dim Zelle As Range
Dim arr() As Long
Dim As Long
Dim Zeilen As Long
Range("J2:J65536").Select
Selection.SpecialCells(xlCellTypeConstants, 23).Select

Application.ScreenUpdating = False
Zeilen = Selection.Cells.Count
ReDim arr(1 To Zeilen)
i = 1
For Each Zelle In Selection
  arr(i) = Zelle.Row
  i = i + 1
Next
For i = 1 To Zeilen
  Rows(arr(i) - i + 1).Delete
Next
Application.ScreenUpdating = True


HTH, Matthias
nach oben   nach unten

Re: Beschleunigung - Löschen Daten
von: Thomas
Geschrieben am: 09.07.2002 - 11:14:09

Danke!

Werd gleich mal Deine Version testen.

LG
Thomas


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "abfrage ob markiert"