2009-10-12 8 views
6

Excel VBA에서 Select Case를 통과하는 방법은 무엇입니까?

을 감안할 때
Select Case cmd 

    case "ONE": MsgBox "one" 

    case "TWO": MsgBox "two" 

    case "THREE": MsgBox "three" 

End select 

내가 "one"을 필요로하고 "two" 현재 내가 "one" 표시 한 다음 프로그램이 선택 케이스에서 깨는 얻고있다 그러나 표시 cmd = "ONE" 경우 내 요구 사항은 ...입니다

+0

cmd = "two"이면 어떻게됩니까? – Gratzy

+0

나는 의도적으로 나 _think_; 코드는 케이스의 마지막 문장 다음에 자동으로 끝으로 이동합니다. 대신 (예를 들어 절차를 사용하여) 주위를 프로그래밍해야합니다. –

+0

@Gratzy : cmd = "two"이면 "two"를 출력하고 구분해야합니다 ... VBA의 기본 동작이라고 생각합니다. VBA는 각 경우마다 "break"문을 암시 적으로 추가한다고 생각합니다. 우회하고 싶다. –

답변

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

    case "THREE": MsgBox "three" 

End select 
+0

"ONE"의 경우이 경우 엔 아무것도 출력하지 않을 것입니다 ... –

+0

저는 각하를 도와 주려고합니다. – manji

+0

좋은 하나! 그 구문은 나를 위해 일했습니다! :) –

3

어떤 사람은 그 일을 할 수 있다면 :

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 
+0

좋은 해결 방법! 나는 이것을 대답으로 추천 할 것이다 :) – seadoggie01

0

이것은 의도적으로 설계된 것입니다. http://msdn.microsoft.com/en-us/library/ee177199%28PROT.10%29.aspx

'고토'또는 프로 시저 호출을 사용하여 시도해 볼 수 있습니다.

+0

좋아! "ONE"사례 입력과 같은 작업을 수행 할 수 있습니까? 몇 가지 처리를 수행 한 다음 GOTO 사례 "TWO"라고 말하거나 사례 "TWO"문 아래에 레이블을 추가하십시오. –

+1

그렇습니다.하지만 디버깅하는 것은 정말 못 생기고 매우 어려울 것입니다. 코드를 상속하는 모든 사람은 "스파게티 코드"를 통해 잡초를 제거해야하는 것을 기뻐하지 않을 것입니다. –

2

오래 걸릴 것입니다.

Select Case cmd 

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

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

    case "THREE": MsgBox "three" 

End select 
0

이유는 무엇인가? 당신이하고있는 일은 'cmd'가 무엇이든 소문자 버전을 인쇄하는 것뿐입니다.

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

사실 나는 단지 설명 목적을 위해 소문자를 보여 주었고 사실상 그 경우에 작성된 코드가있을 것입니다. 그리고 원하는 조건은 프로그램이 cmd = "ONE"를 통해 들어가면 "ONE"에서 일부 코드를 실행해야합니다. 그리고 나서 '~로 떨어지는'두 "... –

0

고토가 잘 될 것이라고 생각합니다.

Select Case cmd 

    Case "ONE" 
     MsgBox "one" 
     GoTo AfterONE: 

    Case "TWO" 
AfterONE: 
     MsgBox "two" 

    Case "THREE" 
     MsgBox "three" 

End Select 

그것은 작동합니다. 나는 그것을 시험했다.

관련 문제