【问题标题】:vbScript - Do While Not "Or"vbScript - 不是“或”时做
【发布时间】:2024-01-20 00:10:02
【问题描述】:

我知道我昨天以某种方式进行了这项工作,但一天结束时我错误地关闭了更改而没有保存。今天我不知道我做错了什么。我有一个 InputBox 循环,只想接受 2 个可能的答案,在这种情况下,apple 或 orange 应该退出循环。

    Do
    myValue = InputBox("Enter something")
    Loop While Not myValue = "apple" Or myValue = "orange"

如果输入了第一个值而不是第二个值,则上述内容只会退出循环。如果我为第二个值添加“Not”以及如下所示,那么无论我输入什么,它都不会退出循环。

    Do
    myValue = InputBox("Enter something")
    Loop While Not myValue = "apple" Or Not myValue = "orange"

我知道这必须是显而易见的,但我认为我已经看同样的代码太久了,看不到它。感谢您的帮助。

【问题讨论】:

    标签: loops vbscript inputbox


    【解决方案1】:

    您可能想要and...

    Do
    myValue = InputBox("Enter something")
    Loop While Not myValue = "apple" And Not myValue = "orange"
    

    Not ands 和 Not ors 令人困惑,但如果你解决它,你会弄明白的。示例输入:苹果

    NOT "apple" = "apple"FALSENOT "apple" = "orange"TRUE。如果您使用 ORTRUE or FALSE 的计算结果为 TRUE。因此循环继续。但如果您使用AND,则整个语句的计算结果为FALSE,允许退出。

    【讨论】:

    • 谢谢!我知道这很明显我做错了。感谢您的快速响应。
    【解决方案2】:

    为什么不把英文翻译成VBScript:

    I want to ask the user until the input is "apple" or "orange"
    

    ==>

      Dim sInp
      Do
         sInp = InputBox("Enter something")
         WScript.Echo "+", sInp
      Loop Until sInp = "apple" Or sInp = "orange"
      WScript.Echo sInp
    

    样本输出:

    + banana
    + apple
    apple
    =============
    
    + pear
    + orange
    orange
    =============
    

    【讨论】: