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

Leere Zeilen löschen

Leere Zeilen löschen
20.01.2004 14:27:30
Torsten K.
Hallo zusammen,
wahrscheinlich eine schon hundertmal gestellte Frage, aber ich komme hier nicht weiter. In Herber's Excel-Hilfe habe ich folgenden Code gefunden:

Sub CellsDelete()
ActiveSheet.UsedRange.SpecialCells( _
xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
End Sub

Den kann ich aber für meine Zwecke nicht verwenden. Wie muß ich den Code anpassen, damit in einem WS alle Zeilen gelöscht werden, welche die Zahl 0 enthalten und zwar ausgehend von der Spalte, in welcher sich der Cursor gerade befindet?
Für Eure Hilfe und Geduld im voraus besten Dank.
Gruß
Torsten

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leere Zeilen löschen
20.01.2004 14:49:08
Karl-Otto Reimann
Hallo Torsten
Bei "In welcher sich der Cursor gerade befindet" wär' ich aber ganz vorsichtig:

Sub Loeschen_2()
'Application.ScreenUpdating = False
Dim lR%, i%
lR = Cells(Rows.Count, 1).End(xlUp).Row
For i = lR To 1 Step -1
If Cells(i, 1) = "0" Then Rows(i).Delete
Next i
End Sub

Gruß KO
AW: Leere Zeilen löschen
20.01.2004 15:06:40
Torsten K.
Hallo "KO",
ich werde Deinen Code gleich mal ausprobieren. Vorab allerdings die Frage, warum ganz vorsichtig zu sein? Meinst Du, wenn der User nicht die gewünschte Spalte vorab anwählt, hat er sich seine Tabelle zerschossen? Das ist klar. Aber der User werde nur ich sein, und in der Regel (:-)) weiß ich, was ich tue. Oder gibt's noch einen anderen Grund?
Gruß
Torsten
Anzeige
AW: Leere Zeilen löschen
20.01.2004 15:18:29
Karl-Otto Reimann
Ist schon richtig, aber bei mehreren geöffneten Dateien und das Ganze
zeitgesteuert verliert man regelmäßig den Cursor. Und wenn dann noch jemand
anderes ...
AW: Leere Zeilen löschen => Hilfe
20.01.2004 15:40:37
Torsten K.
Hallo Karl-Otto,
leider funktioniert Dein Code nur, wenn der Cursor sich in Spalte A befindet.
Was ist den noch falsch?

Sub Null_Löschen()
Application.ScreenUpdating = False
Dim lR%, i%
lR = Cells(Rows.Count, 1).End(xlUp).Row
For i = lR To 1 Step -1
If Cells(i, 1) = "0" Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub

Vielen Dank vorab.
Gruß
Torsten
Anzeige
AW: Leere Zeilen löschen => Hilfe
20.01.2004 15:45:59
Karl-Otto Reimann
Möchtest Du alle Zeilen löschen, in denen eine Null vorkommt?
AW: Leere Zeilen löschen => Hilfe
20.01.2004 15:52:36
Torsten K.
Hallo Karl-Otto,
wahrscheinlich habe ich mich nicht gut genug ausgedrückt:
Ich brauch einen Code, der folgendes macht:
Die Zellen der Spalte, in der sich der Cursor gerade befindet, sollen darauf geprüft werden, ob sie eine Null enthalten, wenn ja, soll die ganze Zeile gelöscht werden. Das kann mal die Spalte A sein, beim nächsten Mal die Spalte X, das soll nicht vorab festgelegt sein.
Kannst Du mir helfen?
Gruß
Torsten
AW: Leere Zeilen löschen => Hilfe
20.01.2004 15:56:04
Karl-Otto Reimann
Ja, kann aber etwas dauern.
AW: Leere Zeilen löschen => Hilfe
20.01.2004 16:00:50
Torsten K.
Nochmals Hallo,
das ist nichts, was ich heute noch brauche.
Nett von Dir, daß Du an meiner Fragestellung dranbleibst.
Schönen Dank vorab.
Gruß
Torsten
Anzeige
AW: Leere Zeilen löschen
20.01.2004 16:10:33
Roland Hochhäuser
Hallo Torsten,
das löscht alle Zeilen unterhalb des Cursors, in denen in der gleichen Spalte eine 0 steht. Die Zeilen, in denen nichts steht, bleiben erhalten. Wenn die auch noch weg sollen, lass die erste Bedingung weg.

Sub ZeilenMit0UnterhalbDesCursorsLöschen()
Dim i As Integer
For i = Cells(65536, ActiveCell.Column).End(xlUp).Row To ActiveCell.Row Step -1
If Not IsEmpty(Cells(i, ActiveCell.Column)) _
And Cells(i, ActiveCell.Column).Value = 0 Then
Rows(i).Delete
End If
Next
End Sub

Gruß
Roland
AW: Leere Zeilen löschen
20.01.2004 16:30:03
Torsten K.
Hallo Roland,
das sieht so ziemlich nach dem aus, was ich brauche.
Hab' vielen Dank für Deine Hilfe.
Gruß
Torsten
Anzeige
Bitte, gern geschehen . . .
20.01.2004 16:45:21
Roland Hochhäuser
. . . und wenn du das "ziemlich" noch konkretisieren musst, nur keine Scheu :-)
Gruß
Roland
AW: Leere Zeilen löschen
20.01.2004 16:17:26
Dan
Hallo, vielleich koente dies dir helfen. Grusse Dan.
'************************************
Option Explicit
Private Const TESTWERT As Variant = 0
' kann ales mogliche sein,
' es wird (als String) mit dem Value der Zelle (auch als String) verglichen
' falls der Wert in der Zelle gleich dem TESTWERT ist, wird die Zeile mit dieser Zelle geloscht
Private Const DURCHGESBEREICH As Variant = "A3:D5"
' DURCHGESBEREICH Settings :
' - um alle Zellen im UsedRange nach TESTWERT durchsuchen ............................. DURCHGESBEREICH = "alle"
' - um alle Zellen im Intersect von UsedRange und einer Spalte durschuchen,
' (Spalte wo sich die active Zelle gerade befindet) ................................... DURCHGESBEREICH = "actcell"
' - sonst eine String die als ein Bereich interpretiert werden kann, z.B. ............. DURCHGESBEREICH = "A3:D5"
Public Sub ZeilenLoschen()
Dim rDurchgesBereich As Range ' in diesem Bereich wird man nach TESTWERT suchen
Dim rZeilenZuLoschen As Range ' dieser Bereich sollte geloscht werden
Dim rZelle As Range

On Local Error GoTo ZeilenLoschen_Err

' wenn erfolgreich, returs Range wo nach TESTWERT gesucht wird
' sonst returns Nothing
Set rDurchgesBereich = SetBereichFurLoschen(DURCHGESBEREICH)

If (Not rDurchgesBereich Is Nothing) Then
For Each rZelle In rDurchgesBereich.Cells
If (CStr(rZelle.Value) = CStr(TESTWERT)) Then
If (rZeilenZuLoschen Is Nothing) Then
Set rZeilenZuLoschen = rZelle.EntireRow
Else
Set rZeilenZuLoschen = Application.Union(rZeilenZuLoschen, _
rZelle.EntireRow)
End If
End If
Next rZelle
If (Not rZeilenZuLoschen Is Nothing) Then rZeilenZuLoschen.Delete
Else
MsgBox "Bereich fur loschen nicht gefunden.", vbCritical, "Zeilen loschen"
End
End If

Exit Sub

ZeilenLoschen_Err:
MsgBox "Error : " & Err.Description, vbCritical, "Error"
End
End Sub


Private Function SetBereichFurLoschen(ByVal vTestBereich As Variant) As Variant
On Error GoTo SetBereichFurLoschen_Err
Set SetBereichFurLoschen = Nothing
Select Case CStr(vTestBereich)
Case "alle"
Set SetBereichFurLoschen = ActiveSheet.UsedRange
Exit Function
Case "actcell"
Set SetBereichFurLoschen = Application.Intersect(ActiveSheet.UsedRange, _
Columns(ActiveCell.Column))
Exit Function
Case Else
Set SetBereichFurLoschen = Range(CStr(vTestBereich))
Exit Function
End Select
Exit Function
SetBereichFurLoschen_Err:
End Function

' falls Fehler auftauchen sollten > DDMAIL@seznam.cz
Anzeige
AW: Vielen Dank an alle für Eure Hilfestellung
20.01.2004 16:37:43
Torsten K.
ich denke, mit dem Code von Roland komme ich weiter.
Gruß
Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige