【发布时间】:2020-09-25 02:04:49
【问题描述】:
我无法为 Excel VBA 课程找到罐的体积;我要做一个VBA函数,我输入坦克的半径、高度和深度,并接收体积。这是一张图片,便于理解:
这是我目前拥有的代码,课程告诉我这是不正确的:
Option Explicit
Function tank(R As Double, d As Double, H As Double) As Double
Dim pi As Double
pi = Application.WorksheetFunction.pi()
If d <= R Then
tank = pi * d ^ 2 / 3 * (3 * R - d)
ElseIf R < d And d <= H - R Then
tank = 2 / 3 * pi * R ^ 3 + pi * R ^ 2 * (d - R)
ElseIf H - R < d And d <= H Then
tank = 4 / 3 * pi * R ^ 3 + pi * R ^ 2 * (H - 2 * R) - pi * (H - d) ^ 2 / 3 * (3 * R - H + d)
End If
End Function
谁能帮我解决这个问题? (我使用的是课程讲师提供的宏,它不会告诉我哪里出了问题,而是告诉我是错还是正确。)
【问题讨论】:
-
你的问题是什么?我会在你的 if 语句中切换
Vfortank -
问题是在VBA中,
H - R < d <= H这样的语句是无效的。您必须将其分成两个单独的比较:例如ElseIf H - R < d And d <= H Then。您应该能够将相同的更改应用于您的其他类似语句。 -
我们需要一些 R/D/H 值和预期结果。 3条腿中哪条失败了?全部?
-
这样做的方法是在 Excel 公式中实现 3 个计算(或拿一个计算器),给每个输入一些
r、d和h,看看是什么预期输出是,然后将函数的输出与相同的输入进行比较。 -
你的函数的参数顺序是否错误?您的作业需要
Tank(R, H, d),而您将其写为Tank(R, d, H)。参数的顺序会完全改变结果。