excel - 使用 Select Case 语句的公共(public)函数会输出 #VALUE!错误

标签 excel vba debugging

根据我书中的一个陈述,它正在计算我选择作为 Select Case letter 的 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 的位置放置一个数字,它会返回 Else Case。但是如果我在里面放一个 Case 的信,它会返回 #VALUE!错误,这意味着我在某处输入了不正确的内容。

该函数位于模块内,因此这不应该是问题。

有什么明显的吗?

最佳答案

解决方案,用数字替换大小写“”的字母。 Excel 不喜欢在其函数中包含字母和数字,不知道为什么。我使用 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

关于excel - 使用 Select Case 语句的公共(public)函数会输出 #VALUE!错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29177935/

相关文章:

sql - 尝试在 VBA 中使用 DAO 运行 DELETE 查询

excel - 在 Excel 中更改 X 轴刻度

excel - 在 Excel 中使用变量作为 COUNTIF

vba - Excel VBA ADODB 后期绑定(bind)错误

excel - 从 Word 中提取作者和评论到 Excel

c++ - 为什么 Windows 的 gflags 不会因这段代码而崩溃?

vba - 如何在 VBA 中实现动态 VLOOKUP?

excel - 如果字符串是数字,则将字符串转换为 int

python - 使用 Visual Studio Code 在 Python 中逐步调试导入的模块

javascript - 运行 iron-node 时出现 Heapdump 错误