Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mehrere Zeilen nach Finden eines Strings löschen?

Frage Entwicklung VB for Applications

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

18.12.2012 um 22:08 Uhr, 3053 Aufrufe, 2 Kommentare

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:

01.
Function ZeilenLoeschen(Zeilen As Integer) 
02.
 
03.
Set VBE = ThisWorkbook.VBProject.VBComponents.Item("Modul1").CodeModule 
04.
 
05.
X = 1 
06.
 
07.
With VBE 
08.
    For X = 1 To Zeilen 
09.
        Select Case True 
10.
            Case InStr(.Lines(X, 1), SuchZeile) 
11.
                For i = 1 To Zeilen 
12.
                    .DeleteLines X 
13.
                    X = X + 1 
14.
                Next i 
15.
        End Select 
16.
    Next X 
17.
End With 
18.
 
19.
End Function
Der Aufruf ist natürlich klar:

01.
SuchZeile = "Print #1, " & """<Customer>""" 
02.
Zeilen = 12 
03.
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
Mitglied: 76109
19.12.2012, aktualisiert um 01:13 Uhr
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
01.
For xy = Zeilen To 1 Step -1 
02.
...
Gruß Dieter
Bitte warten ..
Mitglied: goodbytes
19.12.2012 um 03:14 Uhr
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.

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

So ist`s natürlich dann besser:

01.
For i = X + Zeilen To X Step -1
Dank dir aber trotzdem!

Gruß
Torsten
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Mehrere lokale Drucker löschen (4)

Frage von Tealk144 zum Thema Batch & Shell ...

Batch & Shell
Powershell - Zeilen in einer csv löschen bis (7)

Frage von Franz-Josef-II zum Thema Batch & Shell ...

Perl
gelöst Mit Perl aus einer Datei teilidentische Zeilen löschen (5)

Frage von Jeduja zum Thema Perl ...

Heiß diskutierte Inhalte
Viren und Trojaner
gelöst Wie werde ich den Mist "fanli90" wieder los? (18)

Frage von Taumel zum Thema Viren und Trojaner ...

Switche und Hubs
LAG zwischen Cisco SG300 und Dlink DGS1100 herstellen - wie? (17)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

CPU, RAM, Mainboards
Hardware Fragen (12)

Frage von xaver-2 zum Thema CPU, RAM, Mainboards ...

Grafikkarten & Monitore
Neue Graifkkarte - kein Bild (10)

Frage von bestelitt zum Thema Grafikkarten & Monitore ...