Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1228to1232
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

bedingte Zeilenlöschung

bedingte Zeilenlöschung
janesch
Hallo Excel/VBA-Cracks.
in meinem Tabellenblatt habe ich folgenden

Sub eingebaut:

Sub leerezeileweg ()
Range ("A10:A300").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
funktioniert alles Prima!!!
Nun möchte ich jetzt in unterschiedlichen Zeile einen Wert eintragen und dabei sollen die 5 drunter liegende Zeilen nicht gelöscht werden (egal obr Leer oder nicht).
Wäre toll, wenn mir da jemand helfen könnte. Danke !!!
Janesch

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

Betreff
Benutzer
Anzeige
AW: bedingte Zeilenlöschung
26.09.2011 17:18:52
Stephan
Hallo Janesch,
ich würde die Zeilen einzeln löschen:

Sub Zeilen_löschen()
For Zeile = 10 To 300
If Cells(Zeile, 1)  "" Then Zeile = Zeile + 5 Else Rows(Zeile).EntireRow.Delete
Next Zeile
End Sub
Ich hoffe, es klappt.
Stephan
AW: bedingte Zeilenlöschung
26.09.2011 17:48:17
Yal
Achtung beim Löschen von Zeilen nach ZeileNr innerhalb einer "For"-Schleife:
nach dem Löschen der Zeile 12 ist dann die ehemalige Zeile 13 die neue Zeile 12, und "Next" geht weiter auf die jetzige Zeile 13, die früher 14 war. Spricht eine Zeile (die jetzige 12, die früher 13 war) wird nicht ausgewertet.
Die Lösung: Rückwärts auswerten
For Zeile = 300 to 10 step -1
.....
Next Zeile
Viel Erfolg
Yal
Anzeige
bedingte Zeilenlöschung
27.09.2011 01:15:11
Erich
Hi,
verstehe ich die Aufgabe richtig, wenn ich meine, dass nicht nur die 5 Zeilen unter einer nichtleeeren Zelle,
sondern auch die Zeile mit der nichtleeren Zelle selbst erhalten bleiben soll?
Pro nichtleerer Zelle bleiben also 6 Zeilen stehen.
Das würde ich dann so lösen:

Option Explicit
Sub LeereZeileWeg2()
Dim arrQ, zz As Long, ss As Long, rngDel As Range
arrQ = Range("A1:A300")
For zz = 10 To 300
If arrQ(zz, 1)  "" Then
ss = zz
ElseIf zz > ss + 5 Then
If rngDel Is Nothing Then
Set rngDel = Cells(zz, 1)
Else
Set rngDel = Union(rngDel, Cells(zz, 1))
End If
End If
Next zz
If Not rngDel Is Nothing Then rngDel.Select 'EntireRow.Delete
End Sub
(Das Select am Ende ist nur zum Testen, später durch EntireRow.Delete zu ersetzen.)
@Stephan:
Wenn in A16 und A18 nichtleer sind, bleibt bei deiner Lösung A18 unbeachtet, gelöscht wird ab Zeile 22.
Wegen A18 darf aber erst ab Zeile 24 gelöscht werden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: bedingte Zeilenlöschung
27.09.2011 08:59:34
janesch
Hallo Stephan, Yal, Erich G,
danke für die Hilfe, werde gleich ausprobieren.
Gruß
Janesch
Nachfrage
27.09.2011 13:58:05
Erich
Hi Janesch,
ist dir nicht aufgefallen, dass ich vor meinem Vorschlag eine Frage gestellt habe?
Ich meine diese hier:
"verstehe ich die Aufgabe richtig, wenn ich meine, dass nicht nur die 5 Zeilen unter einer nichtleeeren Zelle,
sondern auch die Zeile mit der nichtleeren Zelle selbst erhalten bleiben soll?
Pro nichtleerer Zelle bleiben also 6 Zeilen stehen."
Wie wäre es mit einer Antwort? Auch Fragesteller dürfen mal Antworten geben. ;-)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Nachfrage
28.09.2011 17:11:15
janesch
Hallo Erich aus Kamp-Linfort,
Sorry für die verspätete Antwort, habe, ehrlich gesagt, verpeilt zu antworten.
Ja, die Aufgabe hast du richtig verstanden, sowohl die nicht leere Zelle als auch die drunter liegenden Zellen sollen erhalten bleiben. Habe mich dann für deine Lösung entschieden.
Großen Dank noch mal!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige