2011-07-25 29 views
0

我試圖開發一個子程序,我可以通過不同的變量來節省一些時間在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

你的'Form'對象來自你的第一個子對象嗎? – JMax

回答

0

如果使用 呼叫openCaseFORM(我會發生什麼,我!listPreAn ?

,如果作爲第二個參數,你不使用它反正你不使用列表,列表框,那麼

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子句你喜歡。

相關問題