Jump to content

VB-Script - Fehler - weiteres Vorgehen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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!

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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!!!

Link zu diesem Kommentar

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 :)

Link zu diesem Kommentar

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! :)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...