Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung VB for Applications

VBScript Error in einer Schleife

Mitglied: waldgnarf

waldgnarf (Level 1) - Jetzt verbinden

10.09.2008, aktualisiert 23.09.2008, 4551 Aufrufe, 7 Kommentare

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
Mitglied: bastla
10.09.2008 um 13:59 Uhr
Hallo waldgnarf!

Was Du vorhast, lässt sich am sinnvollsten mit einem Schalter lösen, etwa:
01.
Gefunden = False 
02.
For ... 
03.
... 
04.
If SUCHSTRING = STRING Then 
05.
    ... 
06.
    Gefunden = True 
07.
End If 
08.
... 
09.
Next 
10.
If Not Gefunden Then 
11.
   .. 
12.
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 ...
Bitte warten ..
Mitglied: waldgnarf
10.09.2008 um 16:02 Uhr
Ehrlich gesagt ist es mir schon peinlich, das ich an diese Dinge nicht schon beim ersten Threat gedacht habe. Ist ja quasi immernoch fast dasselbe Thenma, sorry. Die Error-Fehlermeldung kommt leider immer noch, auch wenn ich
01.
If Not Gefunden Then 
02.
MsgBox "JUHU" 
03.
End If
noch vor Loop Until setze.

01.
Set BLATT=CALC.getSheets().getByIndex(INDEX) 
02.
POSY=0 
03.
POSX=0 
04.
PFLGRU=InputBox("Gruppen Name", "Pflanzen Gruppen Name", "Gruppe") 
05.
If PFLGRU="" Then 
06.
WScript.Quit 
07.
End If 
08.
EINGRU=UCase(PFLGRU) 
09.
     Gefunden=False 
10.
Do 
11.
Set ZELLE=BLATT.getCellByPosition(POSY, POSX) 
12.
INHALT=ZELLE.getFormula() 
13.
NOTITZ=ZELLE.getAnnotation().String 
14.
INHSPL=Split(INHALT, " ") 
15.
For Each INHSTR In INHSPL 
16.
INHTRI=Trim(UCase(INHSTR)) 
17.
If INHTRI=EINGRU Then 
18.
     Gefunden=True 
19.
Exit Do 
20.
End If 
21.
Next 
22.
NOTTRI=Trim(UCase(NOTITZ)) 
23.
If NOTTRI=EINGRU Then 
24.
     Gefunden=True 
25.
Exit Do 
26.
End If 
27.
POSX=POSX+1 
28.
If INHALT="" Then 
29.
INDEX=INDEX+1 
30.
Set BLATT=CALC.getSheets().getByIndex(INDEX) 
31.
POSX=0 
32.
End If 
33.
Loop Until INHTRI=EINGRU 
34.
     If Not Gefunden Then 
35.
     MsgBox "JUHU" 
36.
     Else 
37.
     MsgBox "STANDARD" 
38.
     End If
Gruß waldgnarf
Bitte warten ..
Mitglied: bastla
10.09.2008 um 16:23 Uhr
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:
01.
IF INDEX > CALC.Sheets.Count - 1 Then Exit Do
Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
10.09.2008 um 16:40 Uhr
Vielen Dank für die Hilfe, klappt natürlich super.

Gruß waldgnarf
Bitte warten ..
Mitglied: waldgnarf
23.09.2008 um 11:56 Uhr
Hallo, habe nochmal eine letzte Frage zur Schleife.
Ich möchte den Gesamten Text eines Blattes, also in jeder Zelle in eine Textdatei übertragen.
Dabei soll der Text einer jeden Zelle eine neue Zeile in der Textdatei sein.

01.
Do 
02.
Set ZELLE=BLATT.getCellByPosition(POSY, POSX) 
03.
INHALT=ZELLE.getFormula() 
04.
 
05.
TEXTDATEI=DATEI.OpenAsTextStream(1).ReadAll&vbCrLF:DATEI.OpenAsTextStream(2).WriteLine INHALT 
06.
 
07.
POSY=POSY+1 
08.
Loop Until BLATT.getCellByPosition(20, POSX).getFormula()="" 
09.
CALC.Close (True)
Die Schleife sollte erstmal nur in Zeile 1 bis zur 20sten Zelle laufen, aber in der Textdatei steht nur der Text der ersten Zelle.
Der Loop scheint nicht zu funktionieren, ich habe keine Ahnung warum nicht.

Gruß waldgnarf
Bitte warten ..
Mitglied: bastla
23.09.2008 um 13:41 Uhr
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:
01.
Loop Until BLATT.getCellByPosition(POSY, POSX).getFormula()="" Or POSY>20
Wozu dient das Einlesen der Textdatei innerhalb der Schleife? Zum Erstellen wäre ja nur der Teil
01.
DATEI.OpenAsTextStream(2).WriteLine INHALT
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:
01.
GESAMTTEXT = GESAMTTEXT & vbCrLF & INHALT
Nach der Schleife:
01.
DATEI.OpenAsTextStream(2).Write Mid(GESAMTTEXT, 3)
Durch die Verwendung des Strings GESAMTTEXT erst ab Position 3 wird die überzählige Zeilenschaltung nicht in die Datei geschrieben.

Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
23.09.2008 um 15:30 Uhr
Danke, funktioniert wie ich wollte.

Grüße waldgnarf
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
ERROR Handling in Batch FOR Schleife
gelöst Frage von eldorado1Batch & Shell5 Kommentare

Hallo wie im Betreff genannt würde ich gerne meine Anweisung in der FOR Schleife auf Fehler überprüfen das Funktioniert ...

Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

VB for Applications
VBScript und OR
gelöst Frage von InvisanVB for Applications5 Kommentare

Hi zusammen, derzeit bastel ich ein bisschen in VBScript rum. Leider habe ich mit dem OR Operator einige Probleme. ...

Microsoft Office
Outlook VBScript
gelöst Frage von NebellichtMicrosoft Office5 Kommentare

Hallo, seit ein paar Wochen werden keine VBScripte hinter den (Benutzerspezifschen) Outlook Formularen ausgeführt. Hat jemand eine Lösung parat ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit13 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...