在不同模块中访问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
任何帮助,非常感谢。
答
我的预感是使用Query
作为定制VBA的名称问题结果功能。
将函数从Query
重命名为fnQuery
,并将其返回值更改为Set fnQuery = rsRecord
。然后将Setup()
过程中的赋值语句更改为Set rs = fnQuery(SQL)
答
我一直在使用调试发现>编译发现了很多的VBA问题 - 它会突出了许多错误:
如果将函数从Query改名为fnQuery,则将其返回值更改为Set fnQuery = rsRecord,然后将Setup()更改为'设置rs = fnQuery(SQL)'...它工作吗? – HansUp
电力在办公室里走了出来,然后我可以试一试。我会在星期一进行测试。谢谢。 – Del
就是这样。谢谢。我以为我的名字很清楚,因为它是从另一个分支开始工作的。希望这会教会我遵循适当的命名语法。 – Del