Как пройти через 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