Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Bedingte Löschung von Zeilen über gesamte Arbeitsmappe
#1
Hallo zusammen,

ich haben einen VBA-Code, der bei Erfüllung einer Bedingung die gesamte Zeile löscht. (Bedingung hier "A")
Funktioniert bei einem einzelnen Tabellenblatt perfekt.
Kann mir jemand den Code erweitern, damit dies über alle Tabellenblätter der Arbeitsmappe durchgeführt wird.
So sollen dann alle Zeilen bei allen Tabellenblättern in dem ein "A" steht gelöscht werden.
Vielen Dank für eure Hilfe.

Code:
Public Sub bedingte_Zeilenloeschung()
'** Ermittlung der letzten Zeile in Spalte A
lz = Cells(Rows.Count, 1).End(xlUp).Rows.Row

'** Durchlauf aller Zeilen
For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2
'Abfragen, ob in der ersten Spalte der Buchstabe "x" steht
    If Cells(t, 1).Value = "x" Then
        Rows(t).Delete Shift:=xlUp
    End If
Next t
End Sub
Antworten Top
#2
Hi,

mach eine Schleife um deinen Code:

Code:
For Each Blatt in ThisWorkbook.Worksheets
    With Blatt
        'hier dein bisheriger Code
        'allerdings muss vor jedes Cells und jedes Rows ein Punkt (.Cells bzw. .Rows)
    End With
Next Blatt
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • el-rettev
Antworten Top
#3
Hi. Vielen Dank für deine Hilfe.
Kannst du mir evtl. noch bei einer Sache weiterhelfen:
Aktuell sucht der Code genau nach den Zelleninhalt "A". Wie bekomme ich es hin dass er auch die Zeilen nimmt bei denen auch das "a" innerhalb einer Zeichenkette vorkommt.
Habe mit * als Platzhalter gearbeitet: "*A" aber das funktioniert nicht.
Vielen Dank.
Antworten Top
#4
Smile, dein Code sucht nicht nach "A" sondern nach "x".  21

Wenn du nach "a" irgendwo in der Zelle suchen willst, dann schau dir mal die Funktion InStr() an. Alternativ kannst du auch den Like-Operator statt des Gleichheitszeichens verwenden.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • el-rettev
Antworten Top
#5
Hallo,

Für einen Textvergleich mit Platzhaltern kannst du zum Beispiel den Like Operator verwenden:
Code:
If meinText Like "*a*" Then Debug.Print "Muster"

Viele Grüße
derHöpp
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • el-rettev
Antworten Top
#6
Du hast natürlich Recht. Im Code sucht er aktuell nach "X". Das war sozusagen als unbekannte eintragen. Aber ich suche nach der Bedingung A.
Sind Artikelnummern und wenn in der Nummer ein A soll dieser gelöscht werden.
Nochmal vielen Dank an euch!!!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste