Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将值赋给子对象会生成编译错误:参数不是可选的_Excel_Vba - Fatal编程技术网

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