使用Select Case语句的公共函数会吐出#VALUE! 错误

根据我书中的一个声明,它正在计算我selectSelect Case的那个PV = NRT值。

Public Function ATHING(SolveFor As String, v1 As Single, v2 As Single, v3 As Single, v4 As Single) As Variant Dim p As Single Dim v As Single Dim n As Single Dim R As Single Dim t As Single Select Case SolveFor Case "P" n = v1 R = v2 t = v3 v = v4 ATHING = n * R * t / v Case "V" n = v1 R = v2 t = v3 p = v4 ATHING = n * R * t / p Case "N" p = v1 v = v2 R = v3 t = v4 ATHING= p * v / (R * t) Case "R" p = v1 v = v2 n = v3 t = v4 ATHING = p * v / (n * t) Case "T" p = v1 v = v2 n = v3 R = v4 ATHING = p * v / (n * R) Case Else ATHING = "CAN'T FIND VARIALBE TO SOLVE FOR, DO IT AGAIN" End Select End Function 

如果我在Select Case的地方input一个数字,它会返回Else Case。 但是如果我在里面放一个Case的信,它会返回#VALUE! 错误,这意味着我不知何故有一个不正确的input。

该函数位于模块内部,所以不应该是问题。

有什么明显的吗?

解决scheme,用数字replaceCase“”的字母。 Excel不喜欢在其function内有字母和数字,不知道为什么。 我用0-4来表示PV = NRT,因为它们出现在方程中。

 Public Function ATHING(SolveFor As String, v1 As Single, v2 As Single, v3 As Single, v4 As Single) As Variant Dim p As Single Dim v As Single Dim n As Single Dim R As Single Dim t As Single Select Case SolveFor Case "0" n = v1 R = v2 t = v3 v = v4 ATHING = n * R * t / v Case "1" n = v1 R = v2 t = v3 p = v4 ATHING = n * R * t / p Case "2" p = v1 v = v2 R = v3 t = v4 ATHING= p * v / (R * t) Case "3" p = v1 v = v2 n = v3 t = v4 ATHING = p * v / (n * t) Case "4" p = v1 v = v2 n = v3 R = v4 ATHING = p * v / (n * R) Case Else ATHING = "CAN'T FIND VARIABLE TO SOLVE FOR, DO IT AGAIN" End Select End Function