Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1848to1852
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
Inhaltsverzeichnis

For-Schleife immer um 1 erhöhen

For-Schleife immer um 1 erhöhen
29.09.2021 10:40:32
Ro
Hallo zusammen,
ich hätte ein Grundsatzfrage zur "For"-Schleife und zwar würde ich gerne alle im Autofilter ausgeblendeten Zeilen löschen, nur leider hört die FOR-Schleife auf zu zählen bevor die ausgeblendeten Zeilen gelöscht wurden:

Dim letzteZeileX  as Integer
letzteZeileX = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For d = letzteZeileX To (letzteZeileY + 1)
If Rows(d).EntireRow.Hidden = True Then
Rows(d).EntireRow.Hidden = False
Rows(d).ClearContents
letzteZeileY = letzteZeileY + 1
Else
Exit For
End If
Next d
Wie kann ich die Schleife anpassen, damit sie wirklich bis zum Ende der ausgeblendeten Zeilen durchläuft?
Besten Dank vorab.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For-Schleife immer um 1 erhöhen
29.09.2021 11:01:25
UweD
Hallo
schon im Ersten Durchlauf ist
letzteZeileX sicher schon größer als 1 (letzteZeileY =0; plus 1 =1)
Da wird die Schleife sofort beendet
Warum drehst du den Filter nicht einfach um und löschst dann Alles auf einen Schlag?
Alternative
Do until
....
...
Loop
LG UweD
AW: For-Schleife immer um 1 erhöhen
29.09.2021 16:07:51
Ro
Hallo Uwe,
danke für den Tipp, hab nun eine Do-While Schleife verwendet.
lg Robert
AW: For-Schleife immer um 1 erhöhen
29.09.2021 16:16:27
Ro

'Finde letzte gefilterte Zeile
Dim letzteZeileX As Integer
letzteZeileX = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
'Alle Zeilen löschen die NACH dem Filter kommen
X = letzteZeileX + 1
Do While (Rows(X).EntireRow.Hidden) = True
Rows(X).EntireRow.Hidden = False
Rows(X).ClearContents
Rows(X).Interior.ColorIndex = 0
X = X + 1
Loop
lg Robert
Anzeige
AW: For-Schleife immer um 1 erhöhen
29.09.2021 11:04:58
Nepumuk
Hallo,
versuch es mal so:

Dim letzteZeileX  As Long
letzteZeileX = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For d = letzteZeileX To 1 Step -1
If Rows(d).Hidden Then
Rows(d).Hidden = False
Rows(d).ClearContents
End If
Next d
Gruß
Nepumuk
AW: For-Schleife immer um 1 erhöhen
29.09.2021 16:12:00
Ro
Hallo Nepumuk,
vielen Dank für die Antwort, ich habe jetzt eine Do-While Schleife verwendet.

'Finde letzte gefilterte Zeile
Dim letzteZeileX As Integer
letzteZeileX = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
'Alle Zeilen löschen die NACH dem Filter kommen
X = letzteZeileX + 1
Do While (Rows(X).EntireRow.Hidden) = True
Rows(X).EntireRow.Hidden = False
Rows(X).ClearContents
Rows(X).Interior.ColorIndex = 0
X = X + 1
Loop
lg Robert
Anzeige
AW: For-Schleife immer um 1 erhöhen
29.09.2021 11:12:58
GerdL
Moin Ro!

Dim d As Long, ez As Long, lz As Long
ez = ActiveSheet.AutoFilter.Range.Row + 1
lz = ActiveSheet.AutoFilter.Range.Row + ActiveSheet.AutoFilter.Range.Rows.Count - 1
For d = ez To lz
If ActiveSheet.Rows(d).Hidden = True Then
End If
Next
Du könntest auch das Filterkriterium umdrehen u. die Inhalte der sichtbaren Zellen am Stück entfernen.
Gruß Gerd
AW: For-Schleife immer um 1 erhöhen
29.09.2021 16:13:39
Ro
Hallo Gerd,
vielen Dank für die Antwort, ich habe jetzt eine Do-While Schleife verwendet.

'Finde letzte gefilterte Zeile
Dim letzteZeileX As Integer
letzteZeileX = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
'Alle Zeilen löschen die NACH dem Filter kommen
X = letzteZeileX + 1
Do While (Rows(X).EntireRow.Hidden) = True
Rows(X).EntireRow.Hidden = False
Rows(X).ClearContents
Rows(X).Interior.ColorIndex = 0
X = X + 1
Loop
lg Robert
Anzeige
AW: For-Schleife immer um 1 erhöhen
29.09.2021 16:17:53
Ro
Hallo Gerd,
vielen Dank für die Antwort, ich habe jetzt eine Do-While Schleife verwendet.

'Finde letzte gefilterte Zeile
Dim letzteZeileX As Integer
letzteZeileX = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
'Alle Zeilen löschen die NACH dem Filter kommen
X = letzteZeileX + 1
Do While (Rows(X).EntireRow.Hidden) = True
Rows(X).EntireRow.Hidden = False
Rows(X).ClearContents
Rows(X).Interior.ColorIndex = 0
X = X + 1
Loop
lg Robert
AW: For-Schleife immer um 1 erhöhen
29.09.2021 12:27:08
Daniel
Hi
Kannst du die Filterlogik umdrehen und im Filter alles ausblenden was stehen bleiben muss?
Dann könntest du alle Zeilen außer der Überschrift leeren, weil Excel in gefilterten Tabellen nur die sichtbaren Zeilen bearbeitet, dh die ausgeblendeten Zeilen werden nicht gelöscht
Wenn das mit der Umkehr der Filterlogik nicht klappt, dann folgender Workaround:

With ActiveSheet.Usedrange
With .Columns(.Columns.Count + 1)
.Specialcells(xlcelltypevisible).value = "x"
ActiveSheet.ShowAllData
.SpecialCells(xlcelltypeblanks).entirerow.clearcontents
.ClearContents
End With
End With
Gruß Daniel
Anzeige
AW: For-Schleife immer um 1 erhöhen
29.09.2021 16:15:30
Ro
Hallo Daniel,
vielen Dank für die Antwort, ich habe jetzt eine Do-While Schleife verwendet.

'Finde letzte gefilterte Zeile
Dim letzteZeileX As Integer
letzteZeileX = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
'Alle Zeilen löschen die NACH dem Filter kommen
X = letzteZeileX + 1
Do While (Rows(X).EntireRow.Hidden) = True
Rows(X).EntireRow.Hidden = False
Rows(X).ClearContents
Rows(X).Interior.ColorIndex = 0
X = X + 1
Loop
lg Robert

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige