in meinem Excel File habe ich drei Tabellen, die immer vorhanden sind. (Bestellung, Bestand und EK) Während der Arbeit mit der Datei können zusätzlich weitere Tabellenblätter hinzugefügt werden. Diese haben immer einen unterschiedlichen Namen. Für all diese Tabellen, die zusätzlich erzeugt werden sind Werte in den Spalten A, B und C vorhanden. Sollte in Spalte B eine 0 vorhanden sein, möchte ich, dass die gesamte Zeile entfernt wird.
Sub Zeilen_loeschen() Dim i As Long Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Bestellung" And ws.Name <> "Bestand" And ws.Name <> "EK" Then For i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row If ws.Cells(i, 2) = 0 Then ws.Rows(i).Delete End If Next i End If Next ws
Nein, wieso solltest du das mehrmals starten müssen? Die zweite Schleife läuft doch in jedem Tabellenblatt von Zeile 1 bis zur letzten gefüllten Zeile durch. Aber ich bin grad auf einen Fehler draufgekommen, die zweite Schleife muss ja rückwärts laufen, sonst passt es nicht.
Code:
Sub Zeilen_loeschen() Dim i As Long Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Bestellung" And ws.Name <> "Bestand" And ws.Name <> "EK" Then For i = ws.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If ws.Cells(i, 2) = 0 Then ws.Rows(i).Delete End If Next i End If Next ws
20.02.2019, 14:06 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2019, 14:06 von snb.)
Keep it simple:
Code:
Sub M_snb() For Each it In Sheets If Left(it.Name, 1) = "T" Then it.Columns(2).Replace 0, "=1/0", 1 it.Columns(2).SpecialCells(-4123, 16).EntireRow.Delete End If Next End Sub
Der andere funktioniert womöglich nicht, weil die echte Datei wahrscheinlich nicht lauter Tabellenblätter enthält, die mit "T" beginnen. Keep it simple...
sehr gerne würde ich eine Datei hochladen. Leider sind innerhalb der Tabelle so viele Verweise auf externe Daten, die leider sensibel sind, weshalb ein hochladen unmöglich ist. Ohne diese Formel entstehen keine Werte und es findet keine Überprüfung durch die Makros statt. Sorry
Unabhängig davon habe ich noch eine Frage:
Ist es möglich, dass das Makro auch alle Tabellenblätter löscht, die keinen Inhalt haben und nicht Bestellung Bestand oder EK heißen?` Bei einem zusätzlichem Makro könnte ich die Logik von MisterBurns benutzen. Aber hier erschließt sich mir null die Verknüpfung..