Mehrere Zeilen nach Finden eines Strings löschen?
Hallo,
ich stehe gerade vor einem kleinen Problem.
Ich will in einem VBA-Modul mittels einer geschriebenen Funktion einen String suchen und nach dem Finden diese Zeile und Folgezeilen (als Variable übergeben) löschen.
Leider wird nur ein Teil gelöscht.
Wo liegt da das Problem? Ich hab das Gefühl, dass ich den Wald vor lauter Bäumen nicht sehe...
Hier der Code der Funktion:
Der Aufruf ist natürlich klar:
Zur Info: bei """Customer""" musste ich die "" maskieren, da mein Makro andere Makros, welche für eine Ausgabe als xml-Dateien zuständig sind ändert.
Danke schon mal im Voraus !!!
Torsten
ich stehe gerade vor einem kleinen Problem.
Ich will in einem VBA-Modul mittels einer geschriebenen Funktion einen String suchen und nach dem Finden diese Zeile und Folgezeilen (als Variable übergeben) löschen.
Leider wird nur ein Teil gelöscht.
Wo liegt da das Problem? Ich hab das Gefühl, dass ich den Wald vor lauter Bäumen nicht sehe...
Hier der Code der Funktion:
Function ZeilenLoeschen(Zeilen As Integer)
Set VBE = ThisWorkbook.VBProject.VBComponents.Item("Modul1").CodeModule
X = 1
With VBE
For X = 1 To Zeilen
Select Case True
Case InStr(.Lines(X, 1), SuchZeile)
For i = 1 To Zeilen
.DeleteLines X
X = X + 1
Next i
End Select
Next X
End With
End Function
Der Aufruf ist natürlich klar:
SuchZeile = "Print #1, " & """<Customer>"""
Zeilen = 12
Call ZeilenLoeschen(Zeilen)
Zur Info: bei """Customer""" musste ich die "" maskieren, da mein Makro andere Makros, welche für eine Ausgabe als xml-Dateien zuständig sind ändert.
Danke schon mal im Voraus !!!
Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 196033
Url: https://administrator.de/forum/mehrere-zeilen-nach-finden-eines-strings-loeschen-196033.html
Ausgedruckt am: 05.04.2025 um 11:04 Uhr
2 Kommentare
Neuester Kommentar

Hallo TorstenB!
Ist doch logisch, wenn Du eine Zeile löschst und den Zähler +1 machst, dann wird immer eine Zeile übersprungen. Von daher fange bei der letzten Zeile an, also
Gruß Dieter
Ist doch logisch, wenn Du eine Zeile löschst und den Zähler +1 machst, dann wird immer eine Zeile übersprungen. Von daher fange bei der letzten Zeile an, also
For xy = Zeilen To 1 Step -1
...
Gruß Dieter