Excel / VBA基本功能问题

时间:2010-10-21 21:20:01

标签: excel vba

我知道这是一个总的noob问题,但任何人都可以告诉我为什么这个函数总是返回0:

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。在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

Case Re < 1

这不好。您首先评估Re中的Select Case,然后将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

答案 1 :(得分:4)

除了GSerg提到的内容之外,我认为你还应该明确地转换函数来返回一个double。

我刚刚测试过它的效果如你所愿:

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

答案 2 :(得分:0)

一个简单的改变(除了'&lt; x&lt;')。做到这一点

Select Case True