2009-10-12 81 views
6

鑑於如何在Excel VBA中選擇案例?

Select Case cmd 

    case "ONE": MsgBox "one" 

    case "TWO": MsgBox "two" 

    case "THREE": MsgBox "three" 

End select 

我的要求是,如果cmd = "ONE"我需要"one"然後"two"不過目前顯示我正在"one"顯示,然後程序被打破了選擇案例...

+0

如果cmd =「two」會發生什麼? – Gratzy 2009-10-12 21:06:04

+0

我_think_這是由設計;該代碼會在案例中的最後一條語句後自動跳轉到最後。相反,您將不得不圍繞它編程(例如使用過程)。 – 2009-10-12 21:06:05

+0

@Gratzy:如果cmd =「two」,它應該默認打印「two」並突然出現......我想這是VBA中的默認行爲。我認爲VBA隱含地在每個case後添加「break」語句,即I想繞過。 – 2009-10-12 21:09:25

回答

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」不會打印任何內容... – 2009-10-12 21:12:14

+0

我正在嘗試幫助先生,修復。 – manji 2009-10-12 21:22:01

+0

不錯的一個!該語法爲我工作! :) – 2009-10-12 21:51:13

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 2017-05-04 18:51:12

0

這是設計。 http://msdn.microsoft.com/en-us/library/ee177199%28PROT.10%29.aspx

您可以嘗試使用'goto'或過程調用來解決它。

+0

好!我可以做一些事情,比如輸入大寫「ONE」:做一些處理,然後說GOTO case「TWO」或者在「TWO」語句的情況下添加一些標籤。 – 2009-10-12 21:11:36

+1

是的,但它會非常難看且非常難以調試(並且任何繼承代碼的人都不會高興不得不通過「意大利麪條代碼」)。 – 2009-10-12 21:39:35

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

爲什麼使用Select Case來做這件事?你所做的只是打印「cmd」值的小寫版本。

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

其實我只是爲了描述目的而顯示小寫字母,實際上在這些情況下將會有代碼寫成。我想要的條件是如果程序通過cmd =「ONE」進入,它應該在「ONE」中執行一些代碼然後穿過'到'兩個'... – 2009-10-16 13:30:39

0

GoTo會工作的很好,我想。

Select Case cmd 

    Case "ONE" 
     MsgBox "one" 
     GoTo AfterONE: 

    Case "TWO" 
AfterONE: 
     MsgBox "two" 

    Case "THREE" 
     MsgBox "three" 

End Select 

它的工作原理;我測試了它。