在不同模块中访问VBA表单Private Sub调用公共函数

在不同模块中访问VBA表单Private Sub调用公共函数

问题描述:

在我的数据库中,我有一个模块中的公共函数,它接收一个SQL字符串并返回一个打开的记录集。此功能在由其他公共子公司调用时很好,无论是在此模块还是在其他模块中。在不同模块中访问VBA表单Private Sub调用公共函数

但是,如果我尝试使用相同的确切代码调用相同的函数,我会收到一个编译错误:“错误的参数数量或无效的属性分配。”

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

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

如果将函数从Query改名为fnQuery,则将其返回值更改为Set fnQuery = rsRecord,然后将Setup()更改为'设置rs = fnQuery(SQL)'...它工作吗? – HansUp

+0

电力在办公室里走了出来,然后我可以试一试。我会在星期一进行测试。谢谢。 – Del

+0

就是这样。谢谢。我以为我的名字很清楚,因为它是从另一个分支开始工作的。希望这会教会我遵循适当的命名语法。 – Del

我的预感是使用Query作为定制VBA的名称问题结果功能。

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

我一直在使用调试发现>编译发现了很多的VBA问题 - 它会突出了许多错误:

enter image description here