如何在自定义函数中引用查询?

时间:2015-02-16 17:25:54

标签: ms-access access-vba ms-access-2010

我正在尝试通过引用Excel对象模型来创建自定义函数。首先进入创建/模块/工具/参考/并选择Microsoft Excel 15.0对象库(Access 2010),我能够允许Access引入Excel对象模型。从那里,我使用Excel函数ACOS和COS在Acces中创建了一个基本函数。然后我可以在我的Query中运行此函数而不会出现问题。这是功能:

Public Function myTestFunction(x As Double) As Double
        myTestFunction = Excel.WorksheetFunction.Acos(Cos(50))
End Function

这个测试功能对我来说通常毫无意义,但却是实现我最终目标的良好的第一步。下一步是在函数本身的Query中引用一列。基本上,我想在查询列[LAT]中的每一行替换50值。这是我测试过的:

Public Function myTestFunction(x As Double) As Double     
        myTestFunction = Excel.WorksheetFunction.Acos(Cos([Queries].[Data Query]![LAT]))
End Function

尝试在我的查询中运行此函数后,我收到以下错误:

Run-Time Error 424
Object Required

我的问题是,如何在我的函数中引用查询列[LAT]?

1 个答案:

答案 0 :(得分:0)

修改您的函数以对其 x 参数进行操作。

Public Function myTestFunction(x As Double) As Double
    'myTestFunction = Excel.WorksheetFunction.Acos(Cos(50))
    myTestFunction = Excel.WorksheetFunction.Acos(Cos(x))
End Function

然后,您可以在查询中使用该功能,并为其指定[LAT]字段值。

SELECT dq.[LAT], myTestFunction(dq.[LAT])
FROM [Data Query] AS dq;