goodbytes
Goto Top

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... face-sad

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

Content-Key: 196033

Url: https://administrator.de/contentid/196033

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 76109
76109 Dec 19, 2012 updated at 00:13:53 (UTC)
Goto Top
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
For xy = Zeilen To 1 Step -1
...

Gruß Dieter
Member: goodbytes
goodbytes Dec 19, 2012 at 02:14:47 (UTC)
Goto Top
Hallo Dieter,
ich lag so im Bett, auf einmal kam mir auch so der Gedanke...

Dann war ich der Meinung, ich schreibe es gleich, aber du warst schon schneller. face-wink

Naja, man sollte halt nicht mit Sowas erst am Ende eines Arbeitstages anfangen...

So ist`s natürlich dann besser:

For i = X + Zeilen To X Step -1

Dank dir aber trotzdem!

Gruß
Torsten