Excel 将值赋给子对象会生成编译错误:参数不是可选的
当我试着运行这个宏时,我得到一条消息说 编译错误:参数不是可选的 它突出显示了最后一个等式中的压强Excel 将值赋给子对象会生成编译错误:参数不是可选的,excel,vba,Excel,Vba,当我试着运行这个宏时,我得到一条消息说 编译错误:参数不是可选的 它突出显示了最后一个等式中的压强 Public Sub pressureDrop(p As Double, L As Double, _ D As Double, u As Double, _ e As Double, w As Double) Dim A As Double, B As Double, f As Double
Public Sub pressureDrop(p As Double, L As Double, _
D As Double, u As Double, _
e As Double, w As Double)
Dim A As Double, B As Double, f As Double, k As Double
Dim Re As Double, Rng1 As Range, Rng2 As Range
Re = p * D * u / w
With WorksheetFunction
A = (2.457) * .Ln(1 / (7 / Re) ^ 0.9 + (0.27 * e / D))
B = (37530 / Re) ^ 16
f = 2 * ((8 / Re) ^ 12 + 1 / (A + B) ^ (3 / 2)) ^ (1 / 12)
Set Rng1 = Range("D2:D29")
Set Rng2 = Range("E2:E29")
k = .SumProduct(Rng1, Rng2)
End With
pressureDrop = p * ((4 * f * (L / D) + k) * (u ^ 2) / 2)
End Sub
您还可以调暗另一个变量,并为其指定最终值,而不是将其指定给pressuredrop
Dim dAnswer as Double
dAnswer = p * ((4 * f * (L / D) + k) * (u ^ 2) / 2)
将其更改为函数:
Public Function pressureDrop(...)
...
pressureDrop = p * ((4 * f * (L / D) + k) * (u ^ 2) / 2)
End Function
替换
Public Sub pressureDrop(p As Double, L As Double, _
D As Double, u As Double, _
e As Double, w As Double)
与
您正在尝试编写函数,而不是Sub。将声明更改为Public Function pressureDrop…主要问题是您的代码试图将返回值分配给Sub。返回值的唯一方法是从函数中。但如果你提供更多的环境,社区将能够更好地指导你
Public Function pressureDrop(p As Double, L As Double, _
D As Double, u As Double, _
e As Double, w As Double) as Double