2011-07-25 10 views
0

私はVBA Accessでかなり異なるタイプのリストボックスを作成するときに、私はいくつかの時間を節約するために異なる変数を渡すことができるサブを開発しようとしています。それをしようとしたときしかし、私は実行時エラー「2465」アプリケーション定義またはオブジェクト - を取得フォームとリストボックスを渡す

Private Sub listPreAn_Click() 
Call openCASEFORM(Me, listPreAn) 
End Sub 

:私は次のように作ってみた:

Public Sub openCASEFORM(f As Form, list As ListBox) 
DoCmd.OpenForm f, , , "[FileID]=" & f.list 
End Sub 

そして、次のように私はそれを呼び出します定義されたエラー。私はそれが間違っているのを見るのに苦労しています。何かご意見は?あなたは コールopenCaseFORM(ミー、ミーを使用するとどうなりますか!listPreAn ?

さて、あなたはとにかくそれを使用していない、2番目のパラメータとしてリストボックスとしてリストを使用しない場合の。

+0

あなたの 'Form'オブジェクトはあなたの最初のサブのどこから来ますか? – JMax

答えて

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句を渡すことができます。

0

あなた

関連する問題