Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Werkzeug
BildScreenshot zu Werkzeug Werkzeug-Seite mit Beispielarbeitsmappe aufrufen

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 "