Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
528to532
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
528to532
528to532
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen schneller löschen

Zeilen schneller löschen
10.12.2004 15:58:27
Tim
Hallo Forum,
in einer längeren Liste lösche ich die Zeilen, bei denen in der Spalte C kein "x" steht. Dies funktioniert soweit, ist nur relativ langsam.
Gibt es einen schnelleren Weg?
Dies ist mein Ansatz:
i = 3
While Worksheets("test").Cells(i, 2) ""
If Worksheets("test").Cells(i, 3) "x" Then
Cells(i, 3).EntireRow.Select
Selection.Delete
i = i - 1
End If
i = i + 1
Wend
Danke und Gruß
Tim

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
habe mir mal dieses Makro gestrickt
10.12.2004 16:26:43
Sonnenpeter
Hallo Tim,
bin da kein Profi, habe mir mal dieses Makro gestrickt. ggg
Würde mich auch über Verbesserungsvorschläge freuen.
Gruß / Sonnenpeter
Dim Auftrag
Dim AuftragsBereich
Dim AuftragsBereichFinden
Sub XzellenLöschen() Auftrag = "X" For i = 1 To 2000 Set AuftragsBereich = Sheets("Test").Columns("C:C") With AuftragsBereich Set AuftragsBereichFinden = .Find(Auftrag, LookIn:=xlValues, LookAt:=xlWhole) RRow = AuftragsBereichFinden.Cells.Row Rows(RRow).Select Selection.Delete Shift:=xlUp End With Next i End Sub
Nachtrag
10.12.2004 16:29:56
Sonnenpeter
Dim RRow
Danke
10.12.2004 16:51:09
Tim
Danke, werde deinen Vorschlag in mein Makro einbauen.
Wünsche noch ein schönes Wochenende,
Tim
Anzeige
AW: habe mir mal dieses Makro gestrickt
10.12.2004 18:45:36
Josef
Hallo Peter!
Dein makro ist gar nicht so übel!
Trotzdem ein paar änderungen.

Sub XzellenLöschen()
'Variablendeklarationen gehören in die Prozedur,
'ausser man benötigt "Public" Variablen.
Dim Auftrag As String
Dim AuftragsBereich As Range
Dim AuftragsBereichFinden As Range
'Variablen sollten immer mit dem entsprechenden Typ deklariert werden
Auftrag = "X"
'For i = 1 To 2000 'diese Schleife ist hier unnötig
Set AuftragsBereich = Sheets("Test").Columns("C:C")
Application.ScreenUpdating = False
With AuftragsBereich
Set AuftragsBereichFinden = .Find(Auftrag, LookIn:=xlValues, LookAt:=xlWhole)
If Not AuftragsBereichFinden Is Nothing Then
'um Fehlermeldung zu vermeiden wenn der Suchbegriff nicht vorhanden ist!
Do 'beginn der Schleife
AuftragsBereichFinden.EntireRow.Delete
Set AuftragsBereichFinden = .FindNext(AuftragsBereich.Range("A1"))
Loop While Not AuftragsBereichFinden Is Nothing
'Schleife verlassen, wenn nichts mehr gefunden wird!
End If
End With
Application.ScreenUpdating = True
'Next i
End Sub

Gruß Sepp
Anzeige
Wauuuuu
10.12.2004 19:40:15
Sonnenpeter
Danke Sepp,
Grüß / Sonnenpeter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige