Frage von Simonmarcher, 37

VBScript funktioniert nicht?

Ich habe mir folgenden Script geschrieben:

x = Inputbox ("Suche")

y = wscript.echo replace( x ," ","+")

dim a
set a = CreateObject("WScript.Shell")
a.run "https://www.youtube.com/results?search_query=" + y

Beim öffnen steht immer:

  • Zeile: 3
  • Zeichen: 18
  • Fehler: Anweisungsende erwartet
  • Code: 800A0401
  • Quelle: Kompilierungsfehler in Microsoft VBSript
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Suboptimierer, 22

Entweder echo oder Zuweisung. Beides geht nicht. Wenn du beides haben willst, dann zuerst Zuweisung zu y, dann echo y in einem neuen Befehl.

Du kannst dir wie folgt y sparen:

x = Replace(Inputbox("Suche"), " ", "+")

(ungetestet)

Wenn du schon a deklarierst, solltest du auch x und y deklarieren. Arbeite am besten mit Option Explicit.

Kommentar von Simonmarcher ,

Das funktioniert bei mir auch nicht.

Kommentar von Suboptimierer ,

Folgender Code funktioniert bei mir:

Dim shell
Dim sQuery

sQuery = Replace(Inputbox("Suche"), " ", "+") WScript.Echo sQuery
Set shell = CreateObject("WScript.Shell") shell.run "https://www.youtube.com/results?search\_query=" + sQuery
Kommentar von Suboptimierer ,

Ach, und unten muss & sQuery stehen.
Und noch was: Der \ muss vorm Unterstrich weg: 

shell.run "https://www.youtube.com/results?search\_query=" & sQuery
Kommentar von Simonmarcher ,

Für was ist eigendlich dieses "dim" gut bei mir funktioniert es auch ohne

Kommentar von Suboptimierer ,

Hmm, der Unterstrich wurde wohl automatisch von meinem Editor (oder dem GF-Editor(?)) eingefügt. Das ist ärgerlich für mich.

Dim ist dafür gut, die Variablen, die du verwenden möchtest, bekannt zu geben. Du bekommst einen Überblick darüber, welche Variablen zu einer Funktion gehören. 

Da du keine Funktionen und Klassen verwendest, dient es ausschließlich der Übersichtlichkeit.

Kommentar von Simonmarcher ,

Jetzt funktioniert es . Hab nur falsch abgeschrieben. :D

Antwort
von Berny96, 20

Je nach dem was CreateObject für ein Datentyp zurück gibt musst du in Zeile 3 noch "as ..." hinzufügen. Also "dim a as WScript" falls WScript ein Datentyp ist. (kenne mich leider nicht zu gut mit VB aus.) Eine Variabel muss bei der Deklaration immer wissen für welchen Datentyp Sie vorgesehen ist.

EDIT: Falsche Informationen. Einfach ignorieren :)

Kommentar von Suboptimierer ,

In VB(A) kann man den Datentyp angeben, in VBS leider nicht. Es werden Variants erzeugt, die dynamisch, automatisch einen Datentypen bekommen, in Abhängigkeit vom Kontext.

Kommentar von Berny96 ,

Oh je, dann nehme ich die Antwort zurück. Jetzt weiß ich aber warum ich nie damit anfangen wollte :D

Antwort
von geri3d, 4

Lass in Zeile 3 das

wscript.echo

weg, dann gehts problemlos.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten