Do Until count 使用 Inputbox 永远不会终止

Do Until count using Inputbox never terminates

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

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

当我运行这个时,它继续无限循环而不是在计数等于用户输入的数字后停止。如果我对数字进行硬编码而不是要求它,它会起作用,但当我让用户输入数字时却不起作用。

谁能指出为什么会发生这种情况以及我该如何解决?

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

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

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

我正在用这个做no数据验证。只是想向您展示问题。我们将 InputBox 的结果转换为 int 然后循环条件按预期工作。

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

If one expression is numeric and the other is a string then the numeric expression is less than the string expression.

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 中的 >= 比较所做的更改。