Schleife beenden
Betrifft: Schleife beenden
von: Lars
Geschrieben am: 13.10.2014 09:38:05
Hallo ich habe ein Makro geschrieben, dass alle Zeilen löscht in dem keine "X" in Spalte 19 stehen. Da dies dann aber zu einer Endloschleife wird, bräuchte ich bitte eure Hilfe. Ich bräuchte einen Tipp, wie ich es am besten beenden kann, sodass auch alle Zeilen ohne "X" tatsächlich gelöscht werden. Von mir aus kann das Makro stoppen, wenn zum 1000 mal die gleiche Spalte gelöscht wurde. Glaube das man eine Bedingungsschleife außenrum schreiben muss, aber daran hänge ich leider.
Hier mein Makro zum löschen der Zeilen
Sub test()
Sheets("AMARETO-Report").Select
For N = 12 To Cells.SpecialCells(xlLastCell).Row
If Cells(N, 19) <> "X" Then
Rows(N).Delete
N = N - 1
End If
Next N
End Sub
Würde mich sehr über eure unterstützung freuen
Grüße
Lars
Betrifft: machs rückwärts ...
von: Matthias L
Geschrieben am: 13.10.2014 09:44:54
Hallo Lars
Application.ScreenUpdating = False
For N = Cells.SpecialCells(xlLastCell).Row To 12 Step -1
If Cells(N, 19) <> "X" Then
Rows(N).Delete
N = N - 1
End If
Next N
Gru0ß Matthias
Betrifft: N = N - 1 kann raus, hatte ich vergessen owT
von: Matthias L
Geschrieben am: 13.10.2014 09:55:20
Betrifft: AW: Schleife beenden
von: UweD
Geschrieben am: 13.10.2014 09:49:07
Hallo
- Löschen von Zeilen immer von unten nach oben.
- Auf select kann verzichtet werden
Sub test()
Dim N As Long
Dim SH
Set SH = Sheets("AMARETO-Report")
With SH
For N = .Cells.SpecialCells(xlLastCell).Row To 12 Step -1
If .Cells(N, 19) <> "X" Then
.Rows(N).Delete
End If
Next N
End With
End Sub
Gruß UweD
Betrifft: AW: Schleife beenden
von: RPP63
Geschrieben am: 13.10.2014 10:38:43
Hallo!
Das Löschen von Zeilen per Schleife ist die denkbar beste Variante, um den Kaffeekonsum in unbekannte Höhen zu steigern!
(Meistens handelt es sich dann um keine Endlosschleife, sondern um ein Endlosrödeln von Excel)
Per Hand würde ich es so machen:
Setze einen Autofilter in Spalte S
Filtere nach <>x
Lösche alle sichtbaren Zeilen ab Spalte 12
Entferne den Autofilter
(Excel entfernt nur sichtbare Zeilen!)
In VBA-Sprech (ohne Fehlerüberprüfung):
Dim LetzteZeile As Long
With ActiveSheet.UsedRange
LetzteZeile = .SpecialCells(xlCellTypeLastCell).Row
.AutoFilter Field:=19, Criteria1:="<>x"
Intersect(Rows("12:" & LetzteZeile), .SpecialCells(xlCellTypeVisible)).EntireRow.Delete
End With
Gruß, Ralf
Betrifft: AW: Zeilen löschen schnell mit Duplikate entf.
von: Daniel
Geschrieben am: 13.10.2014 10:44:00
Hi
Zeilen einzeln per Schleifen zu löschen ist die langsamste Methode.
Excel 2007 stellt dir Werkzeuge bereit, dies wesentlich schneller zu tun:
Sub Loeschen()
Dim SP as Long
Dim ZE as Long
With Sheets("AMARETO-Report")
SP = .Specialcells(xlcelltypelastcell).Column + 1
ZE = .Specialcells(xlcelltypelastcell).Row
with .Range(.cells(11, SP), .Cells(ZE, SP))
.FormulaR1C1 = "=If(rc19=""x"",row(),0)"
.cells(1, 1).value = 0
.entirerow.RemoveDuplicates .Column, xlno
.clearcontents
end with
End with
End Sub
Gruß Daniel
Beiträge aus den Excel-Beispielen zum Thema "Schleife beenden "