访问VBA表单私有子调用不同模块中的公共功能

时间:2013-04-12 16:15:44

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

在我的数据库中,我在模块中有一个公共函数,它接收一个SQL字符串并返回一个打开的记录集。当该模块和其他模块中的其他公共子系统调用时,此函数可以正常工作。

但是,如果我尝试使用相同的确切代码调用相同的函数,则会出现编译错误:“参数数量错误或属性赋值无效。”

如果我将确切的代码剪切并粘贴到不同的模块中作为公共子,它可以正常工作。我怀疑这个问题与命名或隐藏变量有关。不幸的是,我无法通过搜索找到任何解决方案。

Public Function Query(SQL As String) As ADODB.Recordset
   Dim cnnConn As ADODB.Connection
   Dim rsRecord As New ADODB.Recordset
   Set cnnConn = CurrentProject.Connection
   rsRecord.ActiveConnection = cnnConn
   rsRecord.Open SQL
   Set Query = rsRecord
End Function

Private Sub Setup()
   Dim rs As New ADODB.Recordset
   Dim SQL As String
   SQL = "Select * FROM [Configuration]"
   Set rs = Query(SQL) <--- Compile Error
   rs.Close
End Sub

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我的预感是使用Query作为该自定义VBA函数的名称导致的问题。

将函数从Query重命名为fnQuery,并将其返回值更改为Set fnQuery = rsRecord。然后将Setup()过程中的赋值语句更改为Set rs = fnQuery(SQL)

答案 1 :(得分:1)

我发现使用Debug&gt;编译在VBA中发现了很多问题 - 它会突出显示许多错误:

enter image description here