【问题标题】:If Statement for Function looping incorrectlyIf 语句循环不正确
【发布时间】:2016-08-13 01:57:56
【问题描述】:

我正在尝试重新创建一个我曾经在 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 语句并第一次重新加载框,然后第二次运行并关闭。如果在此之前提交了一个空白,它将在正确使用输入之前再次跳过 if 语句。

【问题讨论】:

    标签: if-statement vbscript inputbox msgbox


    【解决方案1】:
    1. 使用变量来存储函数的结果
    2. 不要为变量和函数使用相同的名称

    演示:

    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
    

    【讨论】:

    • 这非常有效。谢谢您的答复。非常感谢。
    • @iixCarbonxZz 另外,Err 是一个内置对象。不要将其用作标识符。
    • @AnsgarWiechers 感谢您指出这一点,我会更改它以避免任何问题。赞赏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多