2010-05-10 135 views
0

我寫了以下部分。當調試時,我看到我輸入第一個案例沒關係。 我的問題是與第二個案例 - 它不輸入它,並進入錯誤消息。問題與「選擇案例」

我做錯了什麼?

Select Case Data_Rate 
    Case "1", "2", "5.5", "11", "6", "9", "12", "18", "24", "36", "48", "54" 
    a = Data_Rate 

    Select Case Date_Rate 
     Case "1" 
     b = 2 
     Case "2", "5.5", "11" 
     b = 1 
     Case Else: 
     MsgBox ("ERROR - Data_Rate") 
    End Select 

    Case "0", "1", "2", "3", "4", "5", "6", "7" 
    a = 3 
    Case Else: 
    MsgBox ("ERROR - Data_Rate") 
End Select 

回答

0

對於像1,2值和6是兩個,它將始終只執行第一種情況

我case語句就像是一堆如果的if/else聲明。

只有一個街區執行

不是多個塊

+0

但我不能像「case」語句中的「if」語句中有幾個值,對嗎? 我可以像這樣: if(Date_Rate =「1」or「2」or「11」)Then .... ??? – Nimrod 2010-05-10 17:08:27

+0

沒關係 - 「IF」的作品:) 謝謝! – Nimrod 2010-05-10 17:22:39

+0

@Nimrod,是的,只是它會被寫爲(Date_Rate =「1」或Date_Rate =「2」或Date_Rate =「11」) – CaffGeek 2010-05-10 17:41:11

3

那是你的實際代碼在上面粘貼?

如果是這樣,這可能是因爲您的嵌套Select語句的值有「datE_rate」而不是「datA_rate」。

如果不是,或者即使如此,您可能也想區分您的錯誤消息,以便更清楚地瞭解它是內部還是外部選擇失敗。

編輯:

此外,我不認爲你使用Option Explicit。如果你是這樣的話,它會誤會你使用Date_Rate,除非你確實有這樣的變量。

+0

+1因爲沒有失明;) – 2010-05-10 20:47:40

+0

感謝託德。 我不知道這是否是問題,因爲我已經將代碼更改爲IF/Else。但是,我沒有任何「date_rate」變量 - 並且我沒有警告消息... 是否有VBA配置選項,我需要設置才能讓此錯誤彈出? 你提到了一些關於「Option Explicit」的內容? – Nimrod 2010-05-11 15:44:19

+0

您需要手動將Option Explicit添加到現有模塊的頂部,然後進入工具>選項,並在第一個選項卡(編輯器)上選中「需要變量聲明」。現在,您創建的任何新模塊都將在頂部插入Option Explicit。然後,您需要將您使用的每個變量調小。這是值得的,以節省時間跟蹤這樣的神祕錯誤。在MSDN和其他網站上閱讀它,例如:使用Option Explicit (http://www.4guysfromrolla.com/webtech/faq/Intermediate/faq6.shtml)。這是關於ASP(VBScript)的,但它也適用於VBA。 – Todd 2010-05-11 18:31:03