Blade1981 10 Geschrieben 18. Juli 2005 Melden Teilen Geschrieben 18. Juli 2005 Hallo! Ich möchte in meinem VB-Script, dass bei einem Fehler nicht abgebrochen wird, sondern dass bei der aktuellen Function wieder von Beginn an gestartet wird. Mit "On Error GoTo <Function>" oder "On Error Resume Next" klappt es nicht. Zumindest bekomm ich das nicht hin. Hier der konkrete Fall: Wenn hier (Nummer=InputBox) eine Zahl mit Buchstaben oder nur Buchstaben eingegeben werden, folgt der Fehler mit Sciptabbruch. Wär doch viel besser, wenn er die Function nochmals von vorne starten würde mit ner MsgBox als Fehlermeldung! Private Function Rechnernummer Nummer=InputBox ("Bitte Rechnernummer (1 - 254) eingeben!", "Rechnernummer") If Nummer = FALSE Then 'Bei drücken auf Abbruch folgt Function Abbruch Abbruch ElseIf Nummer >= 1 and Nummer < 255 Then Ueberpruefung Else Meldung = MsgBox("Ungültige Eingabe!", vbOKOnly, "Abbruch!") Rechnernummer End If End Function Danke schonmals! Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 18. Juli 2005 Autor Melden Teilen Geschrieben 18. Juli 2005 Hab noch bei anderen Scripts ne Möglichkeit gefunden, aber es geht einfach ned... Hier so, wie es "eigentlich" funktionieren sollte, aber er erkennt nen Fehler in der 2. Zeile wg dem "EnumerateValuesError" -> Syntaxfehler Private Function Rechnernummer On Error Goto EnumerateValuesError Nummer=InputBox ("Bitte Rechnernummer (1 - 254) eingeben!", "Rechnernummer") If Nummer = FALSE Then Abbruch ElseIf Nummer >= 1 and Nummer < 255 Then Ueberpruefung Else Meldung = MsgBox("Ungültige Eingabe!", vbOKOnly, "Abbruch!") Rechnernummer End If Exit Function EnumerateValuesError: MsgBox "Error occured ja ja!" Rechnernummer Exit Function End Function Zitieren Link zu diesem Kommentar
micha42 29 Geschrieben 19. Juli 2005 Melden Teilen Geschrieben 19. Juli 2005 bin bei VBS nicht so Textsicher, aber gäbe es da nicht eine Möglichkeit, indem man die Variable dimensioniert mit Dim Rechnungsnummer as Integer (unter VBA geht das) sinn: Es wird ein eindeutiger Fehler generiert (Falsche eingabe) Michael Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 19. Juli 2005 Autor Melden Teilen Geschrieben 19. Juli 2005 Unter VBS kann man leider keine Variablen deklarieren. Versucht man Dim ... as ..., dann meckert das Script noch bevor es ausgeführt wird wegen dem "as". Automatisch sind alle Variablen als Variant deklariert. Jedoch auch wenn ich deklarieren könnte, dann wüsste ich nicht weiter, wie ich bei einem Fehler wieder zurück springen könnte. Die einzige Möglichkeit, die ich bisher kenn, ist, dass man das Script einfach weiter laufen lässt, aber das macht keinen Sinn, da die Nummer für den Rechnernamen und die IP wichtig ist. Und dann versuch mal ne IP mit Buchstaben zu vergeben ;) Also bringt mir das auch nix, wenn er nach nem Fehler einfach weiter macht als wär nix gewesen... Trotzdem erstmal danke!!! Zitieren Link zu diesem Kommentar
ati975 10 Geschrieben 19. Juli 2005 Melden Teilen Geschrieben 19. Juli 2005 Hi, versuch's mal so: eingabe=0 while eingabe<1 or eingabe>254 ..eingabe=inputbox("Zahl 1-254:") ..on error resume next ..eingabe=int(eingabe) wend (Die Punkte sind nur für die Einrückung) Die Inputbox erscheint solange, bis ein gültiger Wert eingegeben wurde. Eventuell noch 'ne Zeile für den Abbruch integrieren. Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 19. Juli 2005 Autor Melden Teilen Geschrieben 19. Juli 2005 Hallo! Ey supi :) Gute Lösung! Klappt! Abbruch hab ich integriert. Wenn man jetzt noch eine Fehlermeldung integrieren könnte ("Ungültige Eingabe!") dann wär das perfekt. Aber egal wie ich's mir überdenk, die Meldung kommt immer. Wobei ich ja sagen muss, dass ich nicht genug weiß, um das beurteilen zu können ;) Aber auf jeden Fall schonmal vielen Dank, damit lässt sich gut was anfangen :) Zitieren Link zu diesem Kommentar
ati975 10 Geschrieben 19. Juli 2005 Melden Teilen Geschrieben 19. Juli 2005 Ersetz die Zeile eingabe=int(eingabe) durch if eingabe<1 or eingabe>254 then msgbox("Nur Werte von 1 bis 254 eingeben!") Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 19. Juli 2005 Autor Melden Teilen Geschrieben 19. Juli 2005 Oh.... Das ist wohl sehr viel eleganter als meine Lösung... Habe gerade eben selbst was gefunden mit der Fehlermeldung, aber die is "bisschen" länger ;) Ich probiers aus und meld mich nochmal! Vielen Dank! Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 19. Juli 2005 Autor Melden Teilen Geschrieben 19. Juli 2005 Okay, soo viel is ned um, aber is trotzdem eleganter dein Vorschlag. Geht nur um das If, welches ich ursprünglich in die "Umfangreiche" Lösung umgesetzt habe (If Then Else End If). Es schaut jetzt so aus und funktioniert perfekt: Private Function Rechnernummer Nummer=0 ..while Nummer < 1 Or Nummer > 254 Nummer=InputBox ("Bitte Rechnernummer (1 - 254) eingeben!", "Rechnernummer") ....If Nummer= FALSE Then Abbruch ....Else On Error Resume Next PCNummer=Nummer Nummer=Int(Nummer) ......If Nummer < 1 Or Nummer > 254 then MsgBox("Ungültige Eingabe!") ....End If ..Wend "Weitere Function" End Function Die Zeile mit Integer wollte ich behalten, weil dies die Abfrage auf die Zahl erleichtert und außerdem die "saubere" IP-Eintragung garantiert. Dass ich die "unsaubere" Variable zunächst in eine andere Variable schreibe, hat den Grund, dass sonst die "0"er bei der Namensvergabe verloren gehen wg. Integer. Supi! Also dankeschön, hast mir sehr geholfen! :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.