VBScript Error in einer Schleife
Hallo, habe nochmal ein Problem mit meinem OpenOffice Dokument. :/
Ich wollte in die Loop Schleife eine Funktion einbauen die ausgeführt wird falls mein gesuchter String im Dokument in keiner Zelle gefunden wird.
Deshalb hab ich es mit "On Error Resume Next" und nach dem Loop "If Not SUCHSTRING=STRING Then ..." versucht aber dann läuft der Script ewig weiter. Gibt es eine Möglichkeit die Error Meldung und den Abbruch danach durch eine Funktion in einem Loop zu ersetzen?
Grüße waldgnarf
Ich wollte in die Loop Schleife eine Funktion einbauen die ausgeführt wird falls mein gesuchter String im Dokument in keiner Zelle gefunden wird.
Deshalb hab ich es mit "On Error Resume Next" und nach dem Loop "If Not SUCHSTRING=STRING Then ..." versucht aber dann läuft der Script ewig weiter. Gibt es eine Möglichkeit die Error Meldung und den Abbruch danach durch eine Funktion in einem Loop zu ersetzen?
Grüße waldgnarf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 96567
Url: https://administrator.de/contentid/96567
Ausgedruckt am: 20.11.2024 um 11:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo waldgnarf!
Was Du vorhast, lässt sich am sinnvollsten mit einem Schalter lösen, etwa:
Grüße
bastla
P.S.: Ich nehme an, Du wolltest Dir die Freude, das selbst einzubauen, nicht nehmen lassen, und hast daher den aktuellen Stand des Scripts nicht gepostet ...
Was Du vorhast, lässt sich am sinnvollsten mit einem Schalter lösen, etwa:
Gefunden = False
For ...
...
If SUCHSTRING = STRING Then
...
Gefunden = True
End If
...
Next
If Not Gefunden Then
..
End If
Grüße
bastla
P.S.: Ich nehme an, Du wolltest Dir die Freude, das selbst einzubauen, nicht nehmen lassen, und hast daher den aktuellen Stand des Scripts nicht gepostet ...
Hallo waldgnarf!
Du verwendest ja (in Zeile 33) eine Schleifenabbruchsbedingung der Art: "Du machst weiter, bis Du das gesuchte Wort gefunden hast (und wenn es ewig dauert)!"
Da es aber weniger eine Zeitfrage ist, sondern eher von der Anzahl der Tabellen, die insgesamt durchsucht werden können, abhängt, könntest Du vor Zeile 30 einfügen:
Grüße
bastla
Du verwendest ja (in Zeile 33) eine Schleifenabbruchsbedingung der Art: "Du machst weiter, bis Du das gesuchte Wort gefunden hast (und wenn es ewig dauert)!"
Da es aber weniger eine Zeitfrage ist, sondern eher von der Anzahl der Tabellen, die insgesamt durchsucht werden können, abhängt, könntest Du vor Zeile 30 einfügen:
IF INDEX > CALC.Sheets.Count - 1 Then Exit Do
bastla
Hallo waldgnarf!
Zur Schleife - wenn diese bis zur ersten leeren Zelle in Zeile POSX, aber maximal bis zur Spalte 20 laufen soll, müsste die Bedingung lauten:
Wozu dient das Einlesen der Textdatei innerhalb der Schleife? Zum Erstellen wäre ja nur der Teil
erforderlich ...
Alternativ zum Schreiben jeder einzelnen Zelle könntest Du alle Zellen/Zeilen vorweg in einer Variablen sammeln und dann "am Stück" schreiben - in der Schleife:
Nach der Schleife:
Durch die Verwendung des Strings GESAMTTEXT erst ab Position 3 wird die überzählige Zeilenschaltung nicht in die Datei geschrieben.
Grüße
bastla
Zur Schleife - wenn diese bis zur ersten leeren Zelle in Zeile POSX, aber maximal bis zur Spalte 20 laufen soll, müsste die Bedingung lauten:
Loop Until BLATT.getCellByPosition(POSY, POSX).getFormula()="" Or POSY>20
DATEI.OpenAsTextStream(2).WriteLine INHALT
Alternativ zum Schreiben jeder einzelnen Zelle könntest Du alle Zellen/Zeilen vorweg in einer Variablen sammeln und dann "am Stück" schreiben - in der Schleife:
GESAMTTEXT = GESAMTTEXT & vbCrLF & INHALT
DATEI.OpenAsTextStream(2).Write Mid(GESAMTTEXT, 3)
Grüße
bastla