4

我试图弄清楚如何使用.vbs 仅在一个条件下发生多个事件。(这里我尝试使用 case 语句。)是否有这样的命令,或者我必须为每一行重写命令?(这将通过在前面的代码行中激活它来在记事本上键入。)

  msgbox("I was woundering how old you are.")
    age=inputbox("Type age here.",,"")
    Select Case age
    Case age>24
        x=age-24
        WshShell.SendKeys "I see you are "&x&" years older than me."
        WshShell.SendKeys "{ENTER}"
    Case age<24
        x=24-age
        WshShell.SendKeys "I see you are "&x&" years younger than me."
        WshShell.SendKeys "{ENTER}"
    Case age=24
        WshShell.SendKeys "Wow were the same age!"
        WshShell.SendKeys "{ENTER} "
    End Select
4

2 回答 2

9

我想你正在寻找Select Case True一个增强的Select Case开关使用:

age = inputbox("I was wondering how old you are.")

Select Case True
    ' first handle incorrect input
    Case (not IsNumeric(age))
        WshShell.SendKeys "You silly, you have to enter a number.{ENTER}"
    ' You can combine cases with a comma:
    Case (age<3), (age>120)
        WshShell.SendKeys "No, no. I don't think that is correct.{ENTER}"

    ' Now evaluate correct cases
    Case (age>24)
        WshShell.SendKeys "I see you are " & age - 24 & " years older than me.{ENTER}"
    Case (age<24)
        WshShell.SendKeys "I see you are " & 24 - age &" years younger than me.{ENTER}"
    Case (age=24)
        WshShell.SendKeys "Wow were the same age!{ENTER}"

    ' Alternatively you can use the Case Else to capture all rest cases
    Case Else
        ' But as all other cases handling the input this should never be reached for this snippet
        WshShell.SendKeys "Woah, how do you get here? The Universe Collapse Sequence is now initiated.{ENTER}"

End Select

我添加了一些额外的案例来向您展示这种增强型开关的强大功能。与陈述相反If a And b Then,逗号的情况是短路的。

于 2013-04-03T06:56:33.243 回答
2

将冗余代码封装在过程或函数中。此外,不同的控制结构可能更适合您正在应用的检查类型:

If age>24 Then
  TypeResponse "I see you are " & (age-24) & " years older than me."
ElseIf age<24 Then
  TypeResponse "I see you are " & (24-age) & " years younger than me."
ElseIf age=24 Then
  TypeResponse "Wow were the same age!"
End If

Sub TypeResponse(text)
  WshShell.SendKeys text & "{ENTER}"
End Sub
于 2013-04-02T22:28:12.260 回答