0

データベースにアクセスするために VBA/Access でフォームを作成しています。

フォームには、SQL クエリの結果を表示する *lst_sinistres* リストボックスがあり、結果の 1 つをダブルクリックすると、このコードのおかげで別のフォームが開きます

Private Sub lst_sinistres_DblClick(Cancel As Integer)

    DoCmd.OpenForm "F_SINISTRE_MRH", acNormal, , , , , Me.lst_sinistres.Value

End Sub

フォームを変更し、タブを追加してより人間工学的にしたいと考えました。そこで、*lst_sinistres* リストボックスをタブ内に配置しました。問題は、このリストボックス (現在はタブに配置されている) の結果の 1 つをダブルクリックすると、フォーム *F_SINISTRE_MRH* が開かないことです。

誰かが問題がどこに来るかについて考えを持っていますか?

ありがとうございました

4

1 に答える 1

2

VBA コントロール イベントの特徴は、イベントコードがコントロールオブジェクトから切り離される可能性があることです。これは、コントロールの名前を変更したり、コントロール間で同様のコードをコピー/貼り付けたりすることが原因である傾向があります。リストボックスをタブ コントロールに移動するには、一時的にカット アンド ペーストする必要がありました。これにより、記述されたコードとオブジェクト名の間のリンクが壊れました。コードとオブジェクトが適切にリンクされると、[イベント プロシージャ]がプロパティ シートに表示されます (@4dmonster の提案による)。

VBA エディタを使用している場合は、[デバッグ] -> [コンパイル] を選択すると、すべてのコードが検索され、イベント コードが同じ名前のコントロールに再リンクされます。このステップは、書き直す前に試してみる価値があります。

Private Sub OldControlName_DblClick(Cancel As Integer)
MsgBox "Why don't I work anymore?"
End Sub

これは、たまたま呼び出されないフォームレベルのサブルーチンとして扱われます。pT

于 2013-10-01T16:06:30.527 に答える