直到使用Inputbox计数永远不会终止

时间:2015-03-26 00:59:53

标签: vbscript inputbox do-loops

我试图在VBS中使用Do Until循环。我向用户询问一个数字,然后我希望脚本执行直到计数等于用户输入的数字。

number = InputBox("number")
count = 1

Do Until count = number
    Wscript.Echo "count: " & count & VbCrLf &_
        "number: " & number
    count = count + 1
Loop

Wscript.Echo "Done." & VbCrLf &_
    "count: " & count & VbCrLf &_
        "number: " & number

当我运行它时,它会无限循环而不是在计数等于用户输入的数字后停止。如果我对数字进行硬编码而不是要求编号,那么它可以正常工作,但是当我让用户输入数字时却不行。

有人可以指出为什么会发生这种情况以及如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

阅读 VBScript语言参考Comparison Operators (VBScript)

  

如果一个表达式是数字而另一个是字符串,那么   数值表达式小于字符串表达式。

count = 1

number = InputBox("number")

if IsNumeric( number) then number = CInt( number) else number = count

Do Until count >= number
    Wscript.Echo "count: " & count & VbCrLf &_
        "number: " & number
    count = count + 1
Loop

Wscript.Echo "Done." & VbCrLf &_
    "count: " & count & VbCrLf &_
        "number: " & number

请注意=>=Do Until count >= number的比较所做的更改。

答案 1 :(得分:0)

InputBox正在返回一个字符串。您正在将字符串与从不匹配的数字进行比较,从而将循环进行比较。考虑以下变化。

number = Int(InputBox("number"))
count = 1

Do Until count = number
    Wscript.Echo "count: " & count & VbCrLf & "number: " & number
    count = count + 1
Loop

我正在使用此进行 数据验证。只是想告诉你这个问题。我们将InputBox的结果转换为int,然后循环条件按预期工作。