如果Statement for Function循环不正确

时间:2016-08-13 01:57:57

标签: if-statement vbscript inputbox msgbox

我正在尝试重新创建一个在VBScript中用Python制作的简单程序,让它在对话框中运行。

这是代码:

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

我的问题是:

代码打开输入文本框,如果按下确定按钮时文本框中没有任何内容,则应显示“错误”按钮。错误消息框然后循环。如果它在输入框中显示它应该使用它然后关闭脚本。

实际上,如果我将框保留为空白,则会显示消息,然后循环回输入框,但如果再次留空则会跳过if语句并重新加载输入框。如果输入可以使用它,则跳过if语句并在第一次重新加载框,然后第二次运行和关闭。如果在此之前提交了空白,它将在正确使用输入之前再跳过if语句。

1 个答案:

答案 0 :(得分:3)

  1. 使用变量存储函数的结果
  2. 不要对变量和函数使用相同的名称
  3. 演示:

    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