2017-03-09 17 views
0

私はMainFormと呼ばれるフォームを持ってsubFormと呼ばれるサブフォームがあります。また、MainFormの多くのボタンは、クラスモジュールを作成しました。すべてのボタンに対してOnClickイベントを処理し、モジュール名はclassButtonsです。クラスモジュールでMS Access 2013、サブフォーム操作クラスモジュールを破棄

コード:

MainFormOpen場合に
Public WithEvents cButtons as Access.CommandButton 

Dim tmpValue as String 

Private Sub cButtons_Click() 
    Select Case cButton.Name 
     Case "ButtonA" 
      MainForm.subForm.Requery 
     Case "ButtonB" 
      Let tmpValue = subForm.ComboBox1.Value 
      DoCmd.RunSQL "update sometable set somefield='" & tmpValue & "'" 
     Case "ButtonC" 
      DoCmd.RunCommand acCmdUnhideColumns 
    End Select 
End Sub 

、私は次のコードを持っている:MainFormが開かれるとその後

For i = 0 to Me.Controls.Count - 1 
    If Left(Me.Controls(i).Name,6) = "cmdbtn" Then 
     set btnClass = New classButtons 
     set btnClass.cButtons = Me.Controls(i) 
     btnClass.cButtons.OnClick = "[Event Procedure]" 
     mdPublic.buttonColl.Add btnClass 'buttonColl is a collection variable declared in another module called "mdPublic" 
    End If 
Next 

、すべての3つのボタンの作品をボタンAまたはボタンBをクリックすると、3つのボタンはすべて停止します。

ButtonAとButtonBからsubForm操作を削除しようとしましたが、問題が消えていることがわかりましたので、subForm操作でクラスモジュールを "破棄"すると思います。

しかし、私はその操作が必要です、誰もがアイデアを持っていますか?ありがとうございました !!!!!

+0

私はこの質問を投稿する前に十分なテストをしていませんでした。真実は です。サブフォームだけでなく、メインフォームのコンボボックスから値を取得しようとした場合でも、クラスモジュールも破棄してください。それから私は新しい空のプロジェクトを作成しようとしました、すべてがうまくいって、私の現在のプロジェクトに戻って、再び働かないでください。 2つのプロジェクトの唯一の違いはテーブルですが、テーブル内のデータがクラスモジュールに影響を及ぼすとは思いません。 – Rick

答えて

0

私は何をすると、ボタンの動作を処理するために、フォームの後ろに機能させるHandleButtonClick(文字列としてのX)を呼び出し、その後、各ボタンにイベントプロパティをクリックして次のとおりです。

= HandleButtonClick(「ButtonA」) -

また、私は常にサブフォームコンテナの名前をctrDetailsなどの保持するサブフォームとは異なります。メインフォームの背後にあるコードは、サブフォームコンテナ名を参照する必要があります。

+0

あなたの提案をありがとう、関数は、私はこの問題を解決できなかった場合、バックアップソリューションの一つです、私はそれをあきらめ、関数を使用し始める。 サブフォームに関しては、 'subForm'は単なる例にすぎず、私はコンテナに別の名前を設定しました。 – Rick

関連する問題