2010-10-21 94 views
1

我知道這是一個總noob問題,但任何人都可以告訴我爲什麼這個函數總是返回0:的Excel/VBA基本功能問題

Function Cd(Re As Double) 

Select Case Re 

    Case Re < 1 
     Cd = 24/Re 
    Case 1 < Re < 1000 
     Cd = 18 * Re^(-0.6) 
    Case 1000 < Re 
     Cd = 0.44 

End Select 

End Function 

每當我把它在電子表格中,它總是返回0。例如Cd(5000)= 0,當它應該是0.44。先謝謝您的幫助。

回答

5
Case Re < 1 

這並不好。您首先在您的Select Case中評估Re,現在您正在比較ReRe < 1。很顯然,你想

Case Is < 1 

Case 1 < Re < 1000 

,要麼是不好的。 VB中沒有< X <運算符。該表達式評估爲(1 < (Re < 1000)),其實質上變成1 < False1 < True,其總是False。你的意思在這裏寫的是:再次

Case 1 to 1000 

Case 1000 < Re 

同樣的問題。顯然,你的意思是:

Case Is > 1000 
+0

+ 1爲記錄速度非常詳盡的解釋;-) – bernie 2010-10-21 21:32:56

+0

非常感謝! – Brian 2010-10-21 22:41:37

+1

嘿,布賴恩,如果這個答案是正確的,不要忘記按答案左邊的複選標記。 – Ommit 2010-10-22 21:51:24

4

除了東西GSerg提到我想你也應該明確投函數返回一個雙。

我只是測試,這可以作爲你希望:

Function Cd(Re As Double) As Double 

    Select Case Re 

    Case Is < 1 
     Cd = 24/Re 
    Case 1 To 1000 
     Cd = 18 * Re^(-0.6) 
    Case Is > 1000 
     Cd = 0.44 

    End Select 

End Function 
0

一個簡單的變化(比 '< X <' 等)。做它

Select Case True