Vbscript goto fehler?!

Hallo!
Ich habe einen VBScript Fehler, den ich nicht verstehe.
Hier erstmal der Programmcode:

zahl = 0
rofl:
lol = msgbox(„Du hast schon " & zahl & " mal gedrückt.“, 5, „gedrückt“)
If lol = VbRetry then
zahl = zahl +1
Goto rofl
else
x = msgbox(„Du hast " & zahl & " mal gedrückt.“, 0 , „gedrückt“)
end if

Es kommt immer Fehler in Zeile 6, Zeichen 1. Heißt also, ein Fehler bei goto! Kann mir da eventuell jemand helfen? Wäre nett. Vielen Dank im Vorraus!

MfG,
Kirschi

Hi,

es gibt keine goto in vbscript. Du musst das mit Schleifen lösen. Z.B. sowas in der Art hier:

zahl = -1
Do
zahl = zahl +1
lol = MsgBox(„Du hast schon " & zahl & " mal gedrückt.“, 5, „gedrückt“)
Loop While lol = vbRetry
MsgBox „Du hast " & zahl & " mal gedrückt.“, 0 , „gedrückt“

mfg
JD

cool! Klappt super :wink:
Ich hab leider noch zu viel batch und vb im Blut!^^
joa, vielen, vielen Dank!

MfG,
Kirschi

GOTO gibts in VBS nicht - mach es so:

zahl = 0  
Do  
 lol = msgbox("Du hast schon " & zahl & " mal gedrückt.", 5, "gedrückt")  
 If lol = VbRetry then  
 zahl = zahl +1  
 Else  
 Exit Do  
 End If  
Loop  
x = msgbox("Du hast " & zahl & " mal gedrückt.", 0 , "gedrückt")  

Hier wird eine Do…Loop-Schleife verwendet.

schreib das so:

zahl = 0
lol=VbRetry

do While lol = VbRetry
lol = msgbox(„Du hast schon " & zahl & " mal gedrückt.“, 5, „gedrückt“)
zahl = zahl +1
loop

x = msgbox(„Du hast " & zahl & " mal gedrückt.“, 0 , „gedrückt“)

Gruß Daniel

oder schreib das so:

zahl = 0
lol=VbRetry

While lol = VbRetry
lol = msgbox(„Du hast schon " & zahl & " mal gedrückt.“, 5, „gedrückt“)
zahl = zahl +1
Wend

x = msgbox(„Du hast " & zahl & " mal gedrückt.“, 0 , „gedrückt“)

Gruß Daniel

Erklärung: goto wird in vbscript nicht unterstützt, das gibts in Batchdateien (bat, cmd), suche nach vbscript schleifen, dann wirst du weitere Möglichkeiten finden.

Hallo Kirschi,

Keine Ahnung worin der Fehler leigt. Kenne mich mit Goto-Anweisungen nicht sonderlich gut aus. Für dein Problem wäre auch eher eine Schleife sinnvoll. In Etwas so:

zahl = 0
Do
lol = msgbox(„Du hast schon " & zahl & " mal gedrückt.“, 5, „gedrückt“)
zahl = zahl +1
Loop While lol = vbRetry

zahl = zahl -1 'Hier wieder um eines zurücksetzen!
x = msgbox(„Du hast " & zahl & " mal gedrückt.“, 0 , „gedrückt“)

Ich hoffe das bringt dich weiter.

MfG
Ingo

Hallo Hirschi,
ich kann Dir leider nicht helfen. Habe mal in C# entwickelt - leider nicht in VBScript - sorry.
Viele Grüße

If lol = VbRetry then
zahl = zahl +1
Goto rofl
else

Die Bedingung ist falsch. „VbRetry“ ist keine gültige Variable! „vbRetry“ muss es heißen! Deshalb empiehlt es sich auch „Option Explicit“ anzugeben!

Johannes.

Hallo auch,

VBScript kennt (im Unterschied zu seinem großen Bruder Visual Basic) kein Goto Kommando. Die einzige Ausnahme ist „on error goto“, das wohl der Gewohnheit halber implementiert wurde. Aber auch dieses unterstützt keinen Sprunhmarken, sondern nur zwei Sonderfälle:

on error resume next (ignoriere Fehler)
on error goto 0 (behandle Fehler)

Es ist aber kein Problem, Deine Aufgabenstellung ohne Goto mit einer do oder while Schleife zu lösen. Das ist, nebenbei gesagt, stilistisch deutlich besser. Gotos macht man ungerne, weil sie wild kreuz und quer im Code herumspringen, und man bei komplexen Strukturen leicht die Übersicht verliert. Es gibt nur wenige Anwendungen, die solche Sprünge rechtfertigen, in erster Linie sind es Fehlerbehandlungsmechanismen. Dafür hat VBScript eigene Befehle (Exit Function, Exit …). Also ist Goto entbehrlich, dachte man sich wohl.

Armin.

Hallo und guten Tag,
soweit ich weiss, gibt es kein Goto in VBS. Ich kenne Goto nur im Umfeld der Fehlerbehandlung.
Allerdings könntest du es vom Ansatz her auch so lösen:

zahl = 0
lol = 0
Call rofl(lol)
Do
If lol = 4 Then 'VbRetry then
zahl = zahl + 1
Call rofl(lol)
Else
x = msgbox(„Du hast " & zahl & " mal gedrückt.“, 0 , „gedrückt“)
Exit Do
End If
Loop

Sub rofl(lol)
lol = msgbox(„Du hast schon " & zahl & " mal gedrückt.“, 5, „gedrückt“)
end sub

Ich hoffe mal, dass ich Dir weiter helfen konnte.
Viele Grüße
Stefan