Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
试图使用VBA从Access使用Excel函数LinEst_Vba_Excel_Ms Access - Fatal编程技术网

试图使用VBA从Access使用Excel函数LinEst

试图使用VBA从Access使用Excel函数LinEst,vba,excel,ms-access,Vba,Excel,Ms Access,我试图使用Access中的Excel LinEst函数来推导给定数据集的热耗率曲线。我研究了不同的方法,使Excel函数在Access中可用,但我的代码没有成功 当我尝试测试进程时,收到以下错误消息 “1004:无法获取工作表函数类的LinEst属性” 这是我的密码。你知道我做错了什么吗?非常感谢你的帮助 Function PolyForm(yVals As Variant, xVals As Variant, PolyPower As Integer) Dim XArr() As V

我试图使用Access中的Excel LinEst函数来推导给定数据集的热耗率曲线。我研究了不同的方法,使Excel函数在Access中可用,但我的代码没有成功

当我尝试测试进程时,收到以下错误消息

“1004:无法获取工作表函数类的LinEst属性”

这是我的密码。你知道我做错了什么吗?非常感谢你的帮助

Function PolyForm(yVals As Variant, xVals As Variant, PolyPower As Integer)

    Dim XArr() As Variant
    Dim xl As Object
    Set xl = CreateObject("Excel.Application")
    XArr = XArray(xVals, PolyPower)
    PolyForm = xl.WorksheetFunction.LinEst(yVals, XArr, True, True)
    xl.Quit
    Set xl = Nothing

End Function

Function XArray(InArr, PolyPower)

    Dim XArr() As Variant
    Dim i As Long
    Dim j As Long
    ReDim XArr(1 To UBound(InArr), 1 To PolyPower)
    For i = 1 To UBound(XArr)
    XArr(i, 1) = InArr(i)
        For j = 1 To PolyPower
            XArr(i, j) = XArr(i, 1) ^ j
        Next j
    Next i
    XArray = XArr

End Function    

yVals
xVals
的边界和大小是否相同?我不太熟悉
LinEst
functio,但一些简单的工作表测试似乎表明,如果数组大小不相同,函数调用将失败。此外,我认为,为了在多维数组上使用
LinEst
,需要将其作为
ArrayFormula
调用。您可能会考虑修改您的问题,以包括少量的示例数据,其他数据可以用于测试/调试代码。在将VBA结构合并到Access之前,我在Excel中测试了它。这就是XArray函数创建所需XArr结构的原因,因为VBA不支持数组数学;我的研究表明,我会重复:你可以考虑修改你的问题,包括少量的示例数据,其他数据可以用来测试/调试代码。您还可以包括用于在Excel中测试此功能的VBA代码。在这里提供您的测试是一种礼貌(并且是对您的期望),这样其他人就不必尝试重新发明轮子(因为无论如何,大多数人都不愿意这样做!)。