2016-08-13 2 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 и перезагружает поле в первый раз, а затем запускается и закрывается во второй раз. Если до этого был отправлен пробел, он будет пропустить инструкцию 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

Смежные вопросы