Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
348to352
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
348to352
348to352
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

For each next

For each next
10.12.2003 11:03:38
Benjamin
Hallo zusammen,

habe folgenden code zusammengebastelt.
Funktioniert aber leider nur zur Hälfte.
Ich muss ihn immer mehrmals ausführen damit das Ergebnis stimmt.
Hat jemand ne Idee wo mein Fehler ist?

Vielen Dank im Vorraus.

LG Ben


Sub Anpassen()
Dim Ende As Integer
ActiveSheet.Range("d65536").End(xlUp).Select
Ende = ActiveCell.Row
Dim r As Range
Set r = Range("D21", Range("D" & Ende))
Dim Zeile As Integer
For Each c In r
c.Activate
Zeile = ActiveCell.Row
Zelle = ActiveCell.Address
If Left(c, 5) <> "Daily" _
And Cells(Zeile, "A").Value = "" _
Or Cells(Zeile, "A").Value = "0" Then
c.EntireRow.Delete
End If
Next
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For each next
10.12.2003 11:21:15
Matthias G
Hallo Benjamin,
das Problem ist, dass Du in der Schleife Zeilen löschst.
Wenn Du das tust, musst du von unten nach oben arbeiten:

Sub Anpassen()
Dim Ende As Integer
ActiveSheet.Range("d65536").End(xlUp).Select
Ende = ActiveCell.Row
Dim r As Range
Set r = Range("D21", Range("D" & Ende))
Dim Zeile As Integer
For z = Ende To 21 Step -1
Cells(z, 4).Activate
Set c = ActiveCell
Zeile = z
Zelle = ActiveCell.Address
If Left(c, 5) <> "Daily" _
And Cells(Zeile, "A").Value = "" _
Or Cells(Zeile, "A").Value = "0" Then
c.EntireRow.Delete
End If
Next
End Sub

Der Code ist ein wenig umständlich mit dem Activate und Select, aber das mach ich auf die Schnelle jetzt nicht anders.
Viel Erfolg,
Matthias
Anzeige
AW: For each next
10.12.2003 12:50:05
Benjamin
Danke,

funktioniert super.
Da Du der erste warst, habe ich Deinen Vorschlag umgesetzt.
LG ben
AW: For each next
10.12.2003 13:03:43
Benjamin
Danke,

funktioniert super.
Da Du der erste warst, habe ich Deinen Vorschlag umgesetzt.
LG ben
AW: For each next
10.12.2003 11:24:30
WernerB.
Hallo Benjamin,

zum Löschen von Zeilen sollte man sich immer von unten nach oben durcharbeiten, sonst werden dabei u.U. einzelne Zeilen übersprungen (daher "mehrmals ausführen").
Dies geht aber nicht mit einer For-Each-Schleife, sondern mit einer For-Next-Schleife (Step -1).

Sub Anpassen()
Dim i As Long, laR As Long
Application.ScreenUpdating = False
laR = Cells(Rows.Count, 4).End(xlUp).Row
For i = laR To 21 Step -1
If Left(Cells(i, 4), 5) <> "Daily" Then
If Cells(i, 1).Value = "" Or Cells(i, 1).Value = "0" Then
Cells(i, 1).EntireRow.Delete
End If
End If
Next i
Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).
Anzeige
AW: For each next
10.12.2003 12:47:10
Benjamin
Danke,
funktioniert!
LG Ben
löschen immer von unten ;-)
10.12.2003 11:39:15
IngoG
Hallo Ben,

beim Löschen ganzer Zeilen gibt es immer probleme, wenn man von oben nach unten arbeitet, da excel intern immer mit zeilennummern indiziert und du nach dem löschen die Zeilennummer erhöst, was aber bedeutet, dass du die nächste Zeile überspringst...

vielleicht versuchst Du es mal so:


Sub Anpassen()
' integer kann nur bis 32000
Dim zz As Double
Application.ScreenUpdating = False
For zz = ActiveSheet.Range("d65536").End(xlUp).Row To 21 Step -1
If Left(ActiveSheet.Range("D" & zz), 5) <> "Daily" _
And (Cells(zz, 1).Value = "" _
Or Cells(zz, 1).Value = "0") Then
ActiveSheet.Range("D" & zz).EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End Sub


bei mir funzt das

Gruß Ingo

PS eine Rückmeldung wäre nett...
Anzeige
AW: löschen immer von unten ;-)
10.12.2003 12:45:55
Benjamin
Danke,
funktioniert!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige