2016-08-13 6 views
1

私はPythonでVBScriptで作成した単純なプログラムを再作成して、ダイアログボックスで実行させようとしています。関数ループのステートメントが正しくない場合

これはコードです:

Set objShell = CreateObject("Wscript.Shell") 

Function Query() 
    query = InputBox("Please input the Subreddit you with to navigate to e.g (globaloffensive)", "iixCarbonxZz's Subreddit Finder") 
End Function 

Do 
    If query = "" Then 
     err = MsgBox("Please enter a Valid Subreddit", vbOKOnly + vbExclamation, "Invalid") 
    Else 
     objShell.Run("http://www.reddit.com/r/" & query) 
     WScript.Quit() 
    End If 
    Query() 
Loop 

私の問題はこれです:

コードが入力されたテキストボックスを開き、何もテキストボックスに存在しない場合はOKボタンが押されたとき、それは持参してください'err'エラーメッセージボックスを開き、ループします。入力ボックスに何かがある場合は、それを使用してスクリプトを閉じます。

実際には、ボックスを空白のままにするとメッセージが表示され、入力ボックスに戻りますが、空白のままにしておくと、if文がスキップされ、入力ボックスがリロードされます。使用できる何かが入力された場合は、if文をスキップして最初にボックスをリロードし、次に実行して2回目を閉じます。この前にブランクが提出されていれば、入力を適切に使用する前にifステートメントをもう一度スキップします。

答えて

3
  1. デモ

を変数に同じ名前を使用しないでください関数の結果

  • を格納する変数を使用し、機能:

    Option Explicit 
    
    Function getQuery() 
        getQuery = InputBox("Please input the Subreddit you with to navigate to e.g (globaloffensive)", "iixCarbonxZz's Subreddit Finder") 
    End Function 
    
    Dim query 
    Do 
        query = getQuery() 
        If query = "" Then 
         err = MsgBox("Please enter a Valid Subreddit", vbOKOnly + vbExclamation,"Invalid") 
        Else 
         WScript.Echo "http://www.reddit.com/r/" & query 
         WScript.Quit 0 
        End If 
    Loop 
    
  • +0

    これは完全に働きました。ご回答いただきありがとうございます。大変感謝しています。 – iixCarbonxZz

    +0

    @iixCarbonxZzまた、['Err'](https://msdn.microsoft.com/en-us/library/sbf5ze0e%28v=vs.84%29)はビルトインオブジェクトです。これを識別子として使用しないでください。 –

    +0

    @AnsgarWiechersこれを指摘していただきありがとうございます、私は問題を避けるためにそれを変更します。感謝。 – iixCarbonxZz

    関連する問題