2016-06-22 16 views
0

私は現在、私が作ったいくつかのVBスクリプトのための簡単な愚かなUI(ユーザーインターフェイス)を作っています。私はちょうどそれが最初にユーザーの名前を尋ねる部分を追加しました。私の問題は、この "戻る"オプションを使用して以前の "タブ"に行くたびにあなたの名前を聞いて再実行することです。私はそれを動作させるためにさまざまな方法を探しましたが、できません。私はループ/出口のものが動作するのを見つけることができません。私は名前のスクリプトを別々にして、最初から実行するようにしました。そして、あなたが戻ってくると、それはメインのスクリプトに行きます。しかし、それは、変数値を持たないので、2番目のスクリプトで名前を知らないことになります。ここにスクリプトがあります!Go To Toとは何か?

Dim Input 
Dim Input1 
Dim Input2 
Dim Input3 
Dim InputName 
InputName = Inputbox("Please Enter Your Name", "Name") 
Input = Inputbox("Weclome " & InputName & "" & vbNewLine & "Choose One Of The Options!" & vbNewLine & "" & vbNewLine & "Information" & vbNewLine & "Cool" & vbNewLine & "Hacks" & vbNewLine & "Quit", "Solus") 
If Input = "Information" Then 
    Input1 = Inputbox("Here's The Information!" & vbNewLine & "" & vbNewLine & "Info" & vbNewLine & "Speech" & vbNewLine & "Back" & vbNewLine & "Quit", "Information") 
    If Input1 = "Info" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Info.txt" 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input1 = "Speech" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Speech.vbs" 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input1 = "Back" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input1 = "Quit" Then 
     Wscript.Quit 
    Else 
     msgbox("Please Enter One Of The Options Next Time!") 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    End If 
ElseIf Input = "Cool" Then 
    Input2 = Inputbox("Here's Some Scripts!" & vbNewLine & "" & vbNewLine & "Abracadabra" & vbNewLine & "Calculator" & vbNewLine & "Matrix" & vbNewLine & "Back" & vbNewLine & "Quit", "Cool") 
    If Input2 = "Abracadabra" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Abracadabra.vbs" 
    ElseIf Input2 = "Calculator" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Calculator.vbs" 
    ElseIf Input2 = "Matrix" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Matrix.bat" 
    ElseIf Input2 = "Back" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input2 = "Quit" Then 
     Wscript.Quit 
    Else 
     msgbox("Please Enter One Of The Options Next Time!") 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    End If 
ElseIf Input = "Hacks" Then 
    Input3 = Inputbox("Here's Some Hacks!" & vbNewLine & "" & vbNewLine & "Failure" & vbNewLine & "Haxs" & vbNewLine & "Rekt" & vbNewLine & "Spam" & vbNewLine & "TheOnly" & vbNewLine & "Back" & vbNewLine & "Quit", "Hacks") 
    If Input3 = "Failure" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Failure.vbs" 
     Set Wsh Shell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input3 = "Hacks" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Haxs.vbs" 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input3 = "Rekt" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Rekt.vbs" 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input3 = "Back" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input3 = "Spam" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Spam.bat" 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input3 = "TheOnly" Then 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    ElseIf Input3 = "Quit" Then 
     Wscript.Quit 
    Else 
     msgbox("Please Enter One Of The Options Next Time!") 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    End If 
ElseIf Input = "Quit" Then 
    Wscript.Quit 
Else 
    msgbox("Please Enter One Of The Options Next Time!") 
    Set WshShell = WScript.CreateObject("WScript.Shell") 
    WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
End If 

「戻る」オプションをどのように動作させるかは、プログラムを最初に再起動することです。メインスクリプトに「戻る」を追加すると、最初に実行され、戻ってくるたびに実行されます。私はそれができません。そして、もし私が名前の部分を分けて、それが走らないようにすると、メインスクリプトは名前変数を失い、それを使うことができず、役に立たないでしょう。私はいくつかの間違いをした場合、私はここに新しいです。 ありがとうございます! BTH

+2

このコードでは、実際には空白、インデント、およびコメントを使用できます。コードの壁を理解することは非常に難しいです。 – JNevill

+0

@JNevill、私はすでにインデントを世話しました。それはピアレビューされています。 –

+0

それぞれの 'If'ステートメントに対して新しい' WScript.Shell'オブジェクトを作成しているのに気付きました。あなたが毎回それをしなければならない場合、それは条件の一部ではないので、あなたはそれを上に移動することができます。コードを実行するには 'Shell'オブジェクトが一つだけ必要です。第2に、多くの条件を評価する必要がある場合は、代わりに「ケース選択」を検討してください。最後に、Do..While ... Loopをコーディングするためのいくつかの調査を行います。残念ながら私はここに実際に答えを出すことができません。なぜなら、私はここに他のものが付いているからです。後で返事を受け取っていないなら、試してみましょう。 –

答えて

1

利用可能な文はありますが、コードをスパゲッティに変換するので、一般的には使い方が悪いと考えられています。あるいは、ここではループが良いアプローチになります。人が外側のダイアログに「Quit」と入力するまで名前を収集した後、ループを続けます。

Dim Input 
Dim Input1 
Dim Input2 
Dim Input3 
Dim InputName 

InputName = Inputbox("Please Enter Your Name", "Name") 
Do While Input <> "Quit" 
    Input = Inputbox("Weclome " & InputName & "" & vbNewLine & "Choose One Of The Options!" & vbNewLine & "" & vbNewLine & "Information" & vbNewLine & "Cool" & vbNewLine & "Hacks" & vbNewLine & "Quit", "Solus") 

    If Input = "Information" Then 

     Input1 = Inputbox("Here's The Information!" & vbNewLine & "" & vbNewLine & "Info" & vbNewLine & "Speech" & vbNewLine & "Back" & vbNewLine & "Quit", "Information") 

     If Input1 = "Info" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Info.txt" 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     ElseIf Input1 = "Speech" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Information\Speech.vbs" 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     ElseIf Input1 = "Back" Then 
      'do nothing 
     ElseIf Input1 = "Quit" Then 
      Wscript.Quit 
     Else 
      msgbox("Please Enter One Of The Options Next Time!") 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     End If 

    ElseIf Input = "Cool" Then 

     Input2 = Inputbox("Here's Some Scripts!" & vbNewLine & "" & vbNewLine & "Abracadabra" & vbNewLine & "Calculator" & vbNewLine & "Matrix" & vbNewLine & "Back" & vbNewLine & "Quit", "Cool") 

     If Input2 = "Abracadabra" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Abracadabra.vbs" 
     ElseIf Input2 = "Calculator" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Calculator.vbs" 
     ElseIf Input2 = "Matrix" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Cool\Matrix.bat" 
     ElseIf Input1 = "Back" Then 
      'do nothing 
     ElseIf Input2 = "Quit" Then 
      Wscript.Quit 
     Else 
      msgbox("Please Enter One Of The Options Next Time!") 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     End If 

    ElseIf Input = "Hacks" Then 

     Input3 = Inputbox("Here's Some Hacks!" & vbNewLine & "" & vbNewLine & "Failure" & vbNewLine & "Haxs" & vbNewLine & "Rekt" & vbNewLine & "Spam" & vbNewLine & "TheOnly" & vbNewLine & "Back" & vbNewLine & "Quit", "Hacks") 

     If Input3 = "Failure" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Failure.vbs" 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     ElseIf Input3 = "Hacks" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Haxs.vbs" 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     ElseIf Input3 = "Rekt" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Rekt.vbs" 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     ElseIf Input1 = "Back" Then 
      'do nothing 
     ElseIf Input3 = "Spam" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Hacks\Spam.bat" 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     ElseIf Input3 = "TheOnly" Then 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     ElseIf Input3 = "Quit" Then 
      Wscript.Quit 
     Else 
      msgbox("Please Enter One Of The Options Next Time!") 
      Set WshShell = WScript.CreateObject("WScript.Shell") 
      WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
     End If 
    Elseif Input = "Quit" Then 
     'do nothing. While loop will exit 
    Else 
     msgbox("Please Enter One Of The Options Next Time!") 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.Run "C:\Users\Owner\Desktop\Solus\Solus.vbs" 
    End If 
Loop 
+1

もう一つの良いアイデアは、*関数*にコードを分割することです。より多くの定数を使用することは、これらすべてのパスの重複を減らすという狂った考えではありません。 GoTo *はあなたが鈍器のようにそれを使うならあなたのコードをスパゲッティに変えることができますが、それが得られるラップほど悪くはありません。本当に、ループはGoToの文法的な砂糖です! –

+0

カップルのもの。主にあなたの助けに感謝!スクリプトを実行しようとしましたが、バグがありました。私はそれを実行し、 "バック"を使って試してみたとき、それは未知のエントリとものとしてそれを読んだ。 Quitは機能しませんでしたが、結局私は3つのループスクリプトで終わりました。私の主なことは、「戻る」機能を使って名前機能をスキップすることです。混乱については申し訳ありません。私はそれを修正します。 – BackToHack

+0

ご協力いただきありがとうございます。私はそれが私のせいだと知っています。私は本当にサブと機能についてもっと学ぶ必要がある! – BackToHack

関連する問題