Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehere Texte suchen und die Zeilen löschen

Mehere Texte suchen und die Zeilen löschen
01.03.2016 18:16:45
Ingo
Hallo
Ich habe eine Excel-Tabelle mit Spalte A und Spalte B.
Nun möchte ich diese Tabelle nach bestimmten Texten durchsuchen und die Zeilen löschen, in denen die Texte vorkommen.
Ein Beispiel:
Lösche alle Zeilen die "Hund/Katze" oder "Maus-Vogel" oder "PRP001" oder "GET/Alter" enthalten.
Die Liste mit den Texten, nach denen gesucht werden soll, wird recht lang werden (einige hundert, denke ich).
Ich selber verstehe von VBA ja leider nicht so sehr viel.
Darum habe ich mir mal den folgenden Code ergoogelt:
Sub zeilenloeschen()
Dim i As Long
Dim letzteZeile As Long
Dim suchBereich As Range
Dim gefunden As Range
Dim ersterTreffer As String
Dim suchWert As String
suchWert = "Hund/Katze" 'hier kommt dein Suchwert rein
With ThisWorkbook.Sheets("logs")
letzteZeile = .Range("A" & Rows.Count).End(xlUp).Row
Set suchBereich = .Range("A1:A" & letzteZeile)
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
If Not gefunden Is Nothing Then
ersterTreffer = gefunden.Address
Do
gefunden.Activate
ActiveCell.EntireRow.Delete shift:=xlUp
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
Loop While Not gefunden Is Nothing
End If
End With
End Sub
Das funktioniert auch gut, aber eben nur mit dem einen Suchtext.
Wie kann ich es denn machen, dass ich die anderen Suchtexte da auch noch hinzufüge?
Gruß
Ingo

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehere Texte suchen und die Zeilen löschen
01.03.2016 19:35:41
Michael
Hallo,
Jenachdem,'wieviele'Suchbegriffe es sind hilft entweder ein
SSuch = array("Begriff1","Begriff2") usw
Oder die Suchworte in eine Spalte'des'Arbeitsblattes schreiben.
Ein Schleife müsste'dann nacheinander alle Begriffe in deinem Programm ansprechen.
Mfg

AW: alte Lösung mit GoSub + Return
01.03.2016 22:29:40
Piet
Hallo Michael
Die 1. Lösung ist sehr elegant, sie funktioniert ja prima.
Erweitere sie einfach, benutze sie einfach als Unter-Programm
Die Aenderung sieht du im nachfolgend geanderten Makro.
Die Lösung von Ingo laueft dabei -unveraendert weiter-
Voraussetzung ist eine zweite Tabelle, als Hifstabelle, in der die Namen stehen
die gelöscht werden sollen. Einfach ab "A2" eine Liste anlegen. Das ist alles.
Ich habe sie "Löschliste" genannt, sonst musst du hier den Tabellennamen angeben:
'Set Vfy = ThisWorkbook.Sheets("Löschliste")
Das Programm löscht sogar Moorhühner! Bisschen Spass musss sein.
İn dieser Zeile musst du in (GoStub) das "t" entfernen.
Ich musste es leider einfügen um den Server auszutricksen.
GoStub Suchen 'alte Lösung jetzt als Unter-Programm
mfg Piet
Sub zeilenloeschen()
Dim i As Long
Dim letzteZeile As Long
Dim suchBereich As Range
Dim gefunden As Range
Dim ersterTreffer As String
Dim suchWert As String
'neu einfügen:
Dim Vfy As Object
Dim SB As Object
Dim Edr As String
'Set Vfy = ThisWorkbook.Sheets("Löschliste")
Edr = Vfy.Range("A" & Rows.Count).End(xlUp).Address
'Schleife zum aufruf aller Suchbegriffe
For Each SB In Vfy.Range("A2", Edr)
suchWert = SB.Value  '"Hund/Katze", was in der Liste steht
GoStub Suchen      'alte Lösung jetzt als Unter-Programm
Next SB
Exit Sub
Suchen:  'Suchen und löschen als -Unter Programm-
With ThisWorkbook.Sheets("logs")
letzteZeile = .Range("A" & Rows.Count).End(xlUp).Row
Set suchBereich = .Range("A1:A" & letzteZeile)
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
If Not gefunden Is Nothing Then
ersterTreffer = gefunden.Address
Do
gefunden.Activate
ActiveCell.EntireRow.Delete shift:=xlUp
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
Loop While Not gefunden Is Nothing
End If
End With
Return  'zurück in For Next
End Sub

Anzeige
Verwende die <pre>-Tags (Button Code), ...
02.03.2016 00:46:46
Luc:-?
…Piet,
dann brauchst du die Forumssoftware nicht auszutricksen!
Sub xyz()
Dim alfa
GoSub af: Exit Sub
af: ReDim alfa(0): Return
End Sub
Gruß, Luc :-?
Besser informiert mit …

AW: Verwende die <pre>-Tags (Button Code), ...
02.03.2016 10:09:48
Piet
hallo Luc
Danke für den Hinweis, manche Dinge sind einfach, aber man kommt nicht drauf
Kennst du das: verzweifelt die Brille suchen, die du nach oben geschoben hast?
mfg Piet

AW: alte Lösung mit GoSub + Return
02.03.2016 11:33:31
Ingo
Ich habe das jetzt folgendermaßen ausprobiert:
* Den obigen Code habe ich in ein Modul kopiert.
* Ich habe das "t" in "GoStub Suchen" gelöscht.
* Ich habe ein zweites Tabellenblatt mit dem Namen "Löschliste" angelegt.
* Ich habe im "Löschliste" Tabellenblatt ab Zelle A2 ein paar Texte eingegeben.
* Ich habe das Makro "zeilenloeschen" gestartet.
Ich erhalte nun eine Fehlermeldung:
Laufzeitfehler '91':
Objektvariable oder With-Blogvariabe nicht festgelegt
Wenn ich dann auf "Debuggen" klicke, wird die folgende Zeile gelb markiert:
Edr = Vfy.Range("A" & Rows.Count).End(xlUp).Address
Was mache ich denn da falsch?

Anzeige
AW: alte Lösung mit GoSub + Return
02.03.2016 15:33:40
Piet
Hallo Ingo
ich sehe das ich im Text den ich gesendet habe versehentlich ein Semikolon ist,
das da -nicht- hingehört. Das " ' " vor Set muss raus. Sorry, Fehler von mir.
Diese Zeile muss jetzt komplett grün sein, nach dem entfernen wird Set Blau!
'Set Vfy = ThisWorkbook.Sheets("Löschliste")
völlig korrekt das Excel dann meckert ...
Ich hoffe danach laeuft es einwandfrei.
mfg Piet

' ist ein Apostroph bzw Hochkomma, ...
02.03.2016 15:53:19
Luc:-?
…Piet;
ein Semikolon (HalbDoppelPkt) sieht so aus: ; ;-]
Gruß, Luc :-?

AW: alte Lösung mit GoSub + Return
02.03.2016 22:55:31
Ingo
Hallo Piet
Ja jetzt läuft es einwandfrei.
Suuuper. Ich freue mich sehr. Vielen lieben Dank.
Dass ich das mit dem kleinen Hochkomma nicht selber geschnallt habe, ist natürlich schon etwas peinlich für mich :-)
Gruß
Ingo

Anzeige
AW: etwas übersehen ist menschlich ...
03.03.2016 13:44:10
Piet
Hallo Ingo
Nimms nicht so tragisch, ich übersehe auch immer wieder die "dümmsten Fehler"!
In meinem Alter nimmt man es mit Humor, sagt "sel la vie" oder "so is et halt ..."
Ich freue mich sehr das es laeuft. Das ist die Hauptsache
mfg Piet

AW: etwas übersehen ist menschlich ...
03.03.2016 13:46:59
Ingo
Hallo Piet
Ja es läuft super und ist auch schon täglich hier im Einsatz.
Es erleichtert mit einen Teil meiner Arbeit ungemein.
Gruß
Ingo

332 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige