Как пройти через Select Case в Excel VBA?

дано

Select Case cmd

    case "ONE":   MsgBox "one"

    case "TWO":   MsgBox "two"

    case "THREE": MsgBox "three"

End select

мое требование, если cmd = "ONE" Мне нужно "one" а то "two" отображается, однако в настоящее время я получаю "one" отображается, а затем программа выходит из выбранного случая...

7 ответов


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

    case "THREE": MsgBox "three"

End select

некоторые, если могли бы выполнить эту работу:

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

вам просто придется сделать это длинным путем.

Select Case cmd

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

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

    case "THREE": MsgBox "three"

End select

Это по дизайну. http://msdn.microsoft.com/en-us/library/ee177199%28PROT.10%29.aspx

вы можете попробовать использовать "goto" или вызовы процедур, чтобы обойти его.


зачем использовать для этого Select Case? Все, что вы делаете, это печать строчной версии любого значения "cmd".

If cmd = "ONE" Then
  MsgBox LCase$(cmd)
  MsgBox "two"
Else
  Msgbox LCase$(cmd)
End If

GoTo будет работать хорошо, я думаю.

Select Case cmd

    Case "ONE"
        MsgBox "one"
        GoTo AfterONE:

    Case "TWO"
AfterONE:
        MsgBox "two"

    Case "THREE"
        MsgBox "three"

End Select

это работает, я проверял.


у меня также была эта проблема недавно.

Я нашел наиболее читаемое и масштабируемое решение-создать базовую государственную машину.

просто оберните 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