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

Endlosschleife - warum???

Endlosschleife - warum?
25.08.2005 16:11:17
Basti
Hallo Leute,
ich habe bei folgendem Code eine Endlosschleife, kann aber nicht begreifen, warum. Kann mir da jemand helfen?
Danke,
Basti.
row = Rows.Count
For i = 1 To row Step 1
If Not Cells(i, 16).Value Like "##.*" Then
Rows(i).Select
Selection.Delete Shift:=xlUp
row = row - 1
End If
Next i

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Endlosschleife - warum?
25.08.2005 16:21:32
Peter
Servus,
da ich das jetzt nicht nachbaue (Tabelle), mal ein paar Ansatzpunkte.
1.: row ist ein VBA Befehl, niemals als Variable nutzen.
2.: Variable row wird richtig erkannt? kein Blattbezug?
3.: Schleifen die Zeilen löschen immer von hinten nach vorne (deshalb Endlosschleife)eher so for i = lzeile to 1 step -1
4.: Select dürfte unnötig sein, eher so Rows(i).delete Shift:=xlup
5.: Zeile row=row-1 ist unnötig siehe Pkt. 3
Hoffe es hilft.
MfG Peter
AW: Endlosschleife - warum?
25.08.2005 16:26:26
Eule
Hi Basti, kannst dir folgendes anpassen:

Sub Zeile_weg_wenn()
Const suchbegriff = "OttO"
Dim z As Long, lz As Long, i As Long
z = ActiveSheet.UsedRange.Row
lz = z + ActiveSheet.UsedRange.Rows.count - 1
For i = lz To z Step -1
If Application.CountIf(Rows(i), suchbegriff) > 0 Then
Rows(i).Delete
End If
Next
End Sub

Gruss Eule
Anzeige
AW: Endlosschleife - warum?
25.08.2005 16:35:34
Basti
Hi Eule, hi Peter,
danke für eure Hilfe. Jetzt hat es geklappt.
@Peter: vor allem Ansatzpunkt 3 werd ich mir merken. ;-)
Gruß Basti.
AW: Endlosschleife - warum?
25.08.2005 16:22:59
Matthias
Hallo Basti,

row = Rows.Count
For i = row To 1 Step -1
If Not Cells(i, 16).Value Like "##.*" Then
Rows(i).Delete Shift:=xlUp
End If
Next i

Aber ermittle row besser so:
row = Cells(Rows.Count,1).End(xlUp).Row
(die 1 steht für Spalte A, nimmt die Spalte, die in der letzten zu ermittelnden Zeile einen Wert hat.)
Gruß Matthias
AW: Endlosschleife - warum?
25.08.2005 16:33:08
Basti
Hallo Matthias,
danke für die Hilfe. Jetzt hats geklappt!
Gruß Basti
Anzeige
AW: Endlosschleife - warum?
25.08.2005 16:36:04
Matthias
Hallo Basti,
aber Peter hat Recht. Vermeide Vaiablennamen, die wie VBA-Eigenschaften oder -Methoden heißen. Klappt meistens, klappt machmal, klappt aber nicht immer.
Gruß Matthias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige