So ich habe jetzt mal folgendes getestet:
Code:
On Error Resume Next
If 1 <> 0 then
a=MsgBox("Ist der Netzwerkfehler behebbar?", vbCritical + vbYesNo, "Netzlaufwerk nicht erreichbar")
if a=vbYes then
Set oShellA = WScript.CreateObject("WScript.Shell")
oShellA.Run "C:Test.bat",1,True
End If
x=MsgBox("Nach a vbYes! a=" & a & ", vb=" & vbNo, vbYesNo)
if a=vbNo then
Set oShellB = WScript.CreateObject("WScript.Shell")
oShellB.Run "C:Test2.bat",1,True
End If
End If
Und das funktionierte auch.
Existiert bei Dir die Datei "Test
2.bat" auch? Weil die "2" hatte ich am Ende übersehen - und mich auch schon die ganze Zeit gewundert warum es so aussah, als ob es nicht funktionieren würde. Weil es kommt ja auch kein direkter Fehler.
Folgendes habe ich auch noch getestet - und mit ein bisschen spielen auch Deinen Fehler gefunden:
Code:
On Error Resume Next
If 1 <> 0 then
a=MsgBox("Ist der Netzwerkfehler behebbar?", vbCritical + vbYesNo, "Netzlaufwerk nicht erreichbar")
if a=vbYes then
Set oShellA = WScript.CreateObject("WScript.Shell")
oShellA.Run "C:Test.bat",1,True
else
Set oShellB = WScript.CreateObject("WScript.Shell")
oShellB.Run "C:Test2.bat",1,True
End If
End If
Dein Fehler ist, dass Du direkt hinter dem "Then" eine Anweisung schreibst!
Damit wird kein "End IF" vom Compiler erwartet - und wenn da eins kommt, dann meckert er. Wenn Du also mehrere Anweisung in einem IF Zweig ausführen möchtest, dann musst Du die Anweisung auf die nächste Zeile schreiben und per "End If" bzw. "Else" (usw.) behandeln.
Ich habe es nicht gleich gesehen, da ich VBS schon lange net mehr gemacht habe, und somit seine Eigenheiten auch nicht mehr im Kopf habe
Bitte Schreib es so: falsch: Code:
if a=vbYes then Set oShell = WScript.CreateObject("WScript.Shell")
...
richtig: Code:
if a=vbYes then
Set oShell = WScript.CreateObject("WScript.Shell")
...
Die Einrückung ist nicht notwendig - aber hilfreich um die Übersicht zu behalten - also gewöhn Dich am besten dran sowas zu machen