Hallo zusammen,
ich bins nochmal und brauche auch mal wieder Hilfe zu Makros.
Folgendes Problem:
Ich möchte, dass ein Makro die Zellen nach einem bestimmten Wort durchsucht. Wenn das Wort gefunden wurde, soll
- die Zeile gelöscht werden in der das Wort vorkommt,
- ebenfalls 3 Zeilen darüber gelöscht werden
- eine Anzahl x Zeilen darunter gelöscht werden
Beispiel: Das Wort Test steht in Zelle B7 nun sollen also die Zeilen B4 bis z.B. B18 gelöscht werden.
Einen kleinen Ansatz habe ich bereits. Das Makro löscht mir allerdings nur die Zeile in der das Wort vorkommt und die Anzahl X darunter. Das noch die darüber gelöscht werden bekomme ich nicht hin.
Sub delete()
Worksheets(„Tabelle“).Select
Range(„A1:K999“).Select
For Each Cell In Selection
If Cell.Value = „Test“ Then Cell.Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(100, 100)).Select
Next
Selection.delete
End Sub
Vielleicht könnt Ihr mir (mal wieder) weiterhelfen.
Bedanke mich im Voraus und wünsche einen angenehmen Tag.
Liebe Grüße
Hallo,
sub suche
dim x, y, z as byte
z=5 'ist die Variable für die darunter zu löschenden Zeilen
for x = 1 to 100
for y = 1 to 100
if activesheet.cells(x,y).value=„test“ then
activesheet.rows(x).clear
if x > 3 then
activesheet.rows(x-3).clear
end if
for z = 1 to z
activesheet.rows(x+z).clear
next z
end if
next y
next x
end sub
Habs aber nicht getestet…
Gruß
Ronny
Hi Ronny,
also irgendwas passt da noch nicht.
Dein makro leert mir nur die Zeilen. Ist aber kein Problem, habe einfach den Befehl clear durch delete getauscht und schon löscht es die Zeilen.
Aber es werden nur folgende Zeilen gelöscht:
Zeile in der das Wort Test steht (z.B. Zeile 4) Zeile darüber (Zeile 3) und Zeile 7.
Die Zeilen 1,2,5 und 6 bleiben bestehen, aber die sollen auch weg 
Entschuldige bitte die Umstände.
Hallo Surrinan,
Ich möchte, dass ein Makro die Zellen nach einem bestimmten
Wort durchsucht.
Alle Spalten oder nur eine?
Wenn das Wort gefunden wurde, soll
- die Zeile gelöscht werden in der das Wort vorkommt,
- ebenfalls 3 Zeilen darüber gelöscht werden
- eine Anzahl x Zeilen darunter gelöscht werden
Was bedeutet „Anzahl x“?
Beispiel: Das Wort Test steht in Zelle B7 nun sollen also die
Zeilen B4 bis z.B. B18 gelöscht werden.
Wie kommst du auf die 18?
Einen kleinen Ansatz habe ich bereits.
Ja, ich sehe, ähem, *hüstel*, vielleicht wäre es sehr sinnvoll den Ansatz neu anzumischen 
Davon abgesehen ist mir u.a. völlig unklar was geschehen soll wenn du in A1:K999 in B7, G23, A100, B110, usw. „Test“ stehen hast, was soll dann geschehen?
Gruß
Reinhard
alles klar, da hatte ich Dich falsch verstanden:
sub suche
dim x, y, z as byte
z=5 'ist die Variable für die darunter zu löschenden Zeilen
for x = 4 to 100
for y = 1 to 100
if activesheet.cells(x,y).value=„test“ then
activesheet.rows(x-3).clear
activesheet.rows(x-2).clear
activesheet.rows(x-1).clear
activesheet.rows(x).clear
activesheet.rows(x+1).clear
activesheet.rows(x+2).clear
activesheet.rows(x+3).clear
next y
next x
For x = 100 To 1 Step -1
If activesheet.cells(x, 1).Value = „“ Then
activesheet.Rows(x).Delete
End If
Next x
end sub
Das ist die einfachste Methode, wobei es für die Zeilen activesheet.rows(xxx).clear per Schleife bessere Methoden gibt. Aber für den Einblick in VBA viellei garnich so verkehrt 
Gruß
Ronny
Am besten soll jede Zelle in jeder Spalte durchsucht werden 
Anzahl x: X steht als variabel für eine bestimmte Zeilenanzahl zum Beispiel 10. Weil ich mir noch nicht sicher bin wieviele Zeilen wirklich gelöscht werden sollen.
Die 18 diente nur als Beispiel um evtl. besseres Verständnis zu schaffen. Könnte also auch 2365 sein. Wo wir wieder bei deiner ersten Frage wären, wofür das „x“ steht.
Ja mein Ansatz ist nicht perfekt und sicher voller Fehler, aber er hat schonmal einen Teil abgedeckt von dem was ich wollte. Und da es wie gesagt nur ein Teil war, habe ich hier auf Hilfe gehofft (und ja auch bekommen).
Hi nochmal 
Nun bekomem ich folgende Fehlermeldung:
Fehler beim kompilieren
Next ohne For
und mir wird als Fehlerquelle die Zeile „next y“ markiert.
Du hast das Makro geschreiben, vielleicht kannst du mir auf die Sprünge helfen,a ber ich sehe da doch ein For.
Verwirrte Grüße
Guten Abend,
und nochmal ich (wer hätte das gedacht
).
Und zwar gäbe es noch eine andere Möglichkeit mit der ich ebenfalls zum Ziel kommen würde.
Das Makro müsste dazu die erste Zeile finden, die komplett leer ist und dann diese und die 10 (z.B.) nachfolgenden Zeilen löschen.
Beispiel:
Das Tabellenblatt enthält Daten von Zeile 1 - 20.
Folglich ist die Zeile 21 komplett leer. Demnach sollen die kompletten Zeilen 21 - 31 gelöscht werden
Vielleicht ist das einfacher zu realisieren, ich habe ja keine Ahnung, wie man bereits gemerkt hat 
Danke nochmal!
Upps, da fehlte etwas. Hab’s mal noch verändert:
Sub suche()
Dim x, y, z
For x = 4 To 100
For y = 1 To 100
If ActiveSheet.Cells(x, y).Value = „test“ Then
For z = -3 To 3
ActiveSheet.Rows(x - z).Clear
Next z
End If
Next y
Next x
For x = 100 To 1 Step -1
If ActiveSheet.Cells(x, 1).Value = „“ Then
ActiveSheet.Rows(x).Delete
End If
Next x
End Sub
Gruß
Ronny
Supi *daumenhoch*
Dankesehr (mal wieder) 
Wünsche vorab ein schönes Wochenende!