Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Zeilenlöschen

Betrifft: VBA Zeilenlöschen von: Katharina
Geschrieben am: 21.10.2014 13:47:46

Hallo,

kennt jemand einen Code in VBA, der mir die komplette Zeile löscht, wenn
in einer Zeile in den Spalten C bis J eine 0 steht?

Danke
LG

  

Betrifft: AW: VBA Zeilenlöschen von: Steffi
Geschrieben am: 21.10.2014 14:04:25

Hallo Katharina,

meinst du etwas in dieser Art?

Sub Zeilen_löschen()
    Dim Zähl As Long
    Dim Zelle As Range
    Dim Löschen As Boolean
    
    Zähl = 1 'anpassen
    Löschen = False
    
    With ThisWorkbook.Sheets(1) 'anpassen
        Do While Zähl <= .UsedRange.Rows.Count  'anpassen
            For Each Zelle In .Range(.Cells(Zähl, 3), .Cells(Zähl, 10))
                If Zelle = "0" Then Löschen = True
            Next Zelle
                
            If Löschen Then
                .Rows(Zähl).Delete
                Löschen = False
            Else
                Zähl = Zähl + 1
            End If
        Loop
    End With
    
End Sub


Gruß Steffi


  

Betrifft: AW: VBA Zeilenlöschen von: Daniel
Geschrieben am: 21.10.2014 14:45:31

Hi
zum Zeilenlöschen per VBA eignet sich das Duplikate entfernen.
hierzu trägt man am Datenende eine Formel ein, die alle Zeilen mit 0 markiert, die gelöscht werden müssen und alle die stehen bleiben sollen mit der aktuellen Zeilennummer
dann schreibt man in die Überschriftenspalte noch die 0 und wendet das Duplikateentfernen mit der Hilfsspalte als Kriteriumsspalte an.

sieht als Code so aus:

With ActiveSheet.UsedRange
    With Columns(.Columns.Count + 1)
       .FormulaR1C1 = "=IF(CountIf(RC3:RC10,0)>0,0,Row()
       .Cells(1, 1).value = 0
       .EntireRow.RemoveDuplicates .column, xlno
       .ClearContents
    End With
End With
das löscht jetzt die Zeile, wenn eine der Spalten eine 0 enthält
wenn die Zeile nur dann gelöscht werden soll, wenn alle Spalten der Zeile eine 0 enthalten, dann musst du die Formel ändern:
a) löschen bei mindestens einer 0 in der Zeile: "=IF(CountIf(RC3:RC10,0)>0,0,Row()"
b) löschen wenn alle Zellen der Zeile 0 sind : "=IF(CountIf(RC3:RC10,0)=8,0,Row()"


Gruß Daniel