我正在尝试开发一个sub,我可以传递不同的变量,以便在VBA Access中创建不同类型的列表框时节省一些时间。我想出了以下内容:
Public Sub openCASEFORM(f As Form, list As ListBox)
DoCmd.OpenForm f, , , "[FileID]=" & f.list
End Sub
我称之为:
Private Sub listPreAn_Click()
Call openCASEFORM(Me, listPreAn)
End Sub
然而,在尝试它时,我得到运行时错误'2465'应用程序定义或对象定义的错误。我很难看出它出了什么问题。有什么想法吗?
答案 0 :(得分:0)
如果您使用会发生什么 打电话给openCaseFORM(我,我!listPreAn ?
如果您不使用列表作为列表框作为第二个参数,那么您仍然没有使用它。
答案 1 :(得分:0)
您的代码编写得非常糟糕,因为您正在传递对象,但您需要使用字符串来完成工作。我这样重写了它:
Public Sub openCASEFORM(f As String, list As String)
DoCmd.OpenForm f, , , "[FileID]=" & f(list)
End Sub
要么是,要么:
Public Sub openCASEFORM(f As String, list As ListBOx)
DoCmd.OpenForm f, , , "[FileID]=" & list.Value
End Sub
这两个都假设列表框是一个简单的(即不是多选)。
我建议重写这样更有意义:
Public Sub openCASEFORM(ByVal strFormName As String, ByVal strCriteria As String)
DoCmd.OpenForm strFormName, , , strCriteria
End Sub
这样,您可以传递任何您喜欢的任意WHERE子句。