2016-08-13 53 views
1

我想重新创建一个简单的程序,我在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按钮,它应该带up'err'错误消息框然后循环。如果它在输入框中得到某些东西,它应该使用它然后关闭脚本。

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

回答

3
  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 
+0

这已经完美地工作。感谢您的答复。非常感谢。 – iixCarbonxZz

+0

@iixCarbonxZz另外,['Err'](https://msdn.microsoft.com/en-us/library/sbf5ze0e%28v=vs.84%29)是一个内置对象。不要将其用作标识符。 –

+0

@AnsgarWiechers感谢您指出这一点,我会改变它以避免任何问题。赞赏。 – iixCarbonxZz