Jump to content
Sign in to follow this  
Blade1981

VB-Script - Fehler - weiteres Vorgehen

Recommended Posts

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!

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post

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.

Share this post


Link to post

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

Share this post


Link to post

Ersetz die Zeile

eingabe=int(eingabe)
durch
if eingabe<1 or eingabe>254 then msgbox("Nur Werte von 1 bis 254 eingeben!")

Share this post


Link to post

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!

Share this post


Link to post

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

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...