7

给定

Select Case cmd

    case "ONE":   MsgBox "one"

    case "TWO":   MsgBox "two"

    case "THREE": MsgBox "three"

End select

我的要求是如果cmd = "ONE"我需要 "one"然后"two"显示,但是目前我正在"one"显示,然后程序正在脱离选择案例......

4

8 回答 8

16
Select Case cmd
    case "ONE", "TWO":   
                  if cmd = "ONE" THEN
                      MsgBox "one"
                  end if
                  MsgBox "two"

    case "THREE": MsgBox "three"

End select
于 2009-10-12T21:04:38.897 回答
4

一些如果可以完成这项工作:

If cmd = "ONE" Then 
    MsgBox "one"
    cmd = "TWO"
End If
If cmd = "TWO" Then 
    MsgBox "two"
    cmd = "THREE"
End If
If Cmd = "THREE" Then 
    MsgBox "three"
End If
于 2009-10-12T21:06:11.407 回答
3

你只需要走很长的路。

Select Case cmd

    case "ONE":   MsgBox "one"
                  MsgBox "two"
                  MsgBox "three"

    case "TWO":   MsgBox "two"
                  MsgBox "three"

    case "THREE": MsgBox "three"

End select
于 2009-10-12T21:13:41.063 回答
2

我发现最具可读性和可扩展性的解决方案是小型状态机。

只需将 a 包裹起来,Select然后While用下一个案例结束每个案例。

While cmd <> ""
Select Case cmd
    Case "ONE"
        MsgBox  "one"
        cmd = "TWO"
    Case "TWO"
        MsgBox  "two"
        cmd = ""
    Case "THREE"
        MsgBox  "three"
        cmd = ""
End Select
Wend
于 2018-03-18T03:54:09.337 回答
1

这是设计使然。http://msdn.microsoft.com/en-us/library/ee177199%28PROT.10%29.aspx

您可以尝试使用“goto”或过程调用来绕过它。

于 2009-10-12T21:09:12.943 回答
1

为什么要为此使用 Select Case?您所做的只是打印任何值 'cmd' 的小写版本。

If cmd = "ONE" Then
  MsgBox LCase$(cmd)
  MsgBox "two"
Else
  Msgbox LCase$(cmd)
End If
于 2009-10-15T19:18:50.980 回答
1

我认为 GoTo 会很好用。

Select Case cmd

    Case "ONE"
        MsgBox "one"
        GoTo AfterONE:

    Case "TWO"
AfterONE:
        MsgBox "two"

    Case "THREE"
        MsgBox "three"

End Select

有用; 我测试了它。

于 2017-09-20T04:14:35.583 回答
0

非空案例中的“失败”是 C/C++ 中错误的一大来源,因此在大多数其他语言(包括 VBA)中都没有实现。因此,如其他地方所述,请长期执行并考虑过程调用以避免重复。

但是,如果像我一样,您最终在此页面上是因为您不记得如何进行直通,那么接受的答案的一个细微变化是您可以(与所有 VBA 的命令一样)使用下划线来表示继续到下一行:

Select Case cmd
Case "ONE", _
     "TWO":   
    if cmd = "ONE" Then MsgBox "one"
    MsgBox "two"
Case "THREE":
    MsgBox "three"
End select
于 2020-08-16T16:34:53.650 回答