Vba MS Access 2013,子窗体操作将销毁类模块

Vba MS Access 2013,子窗体操作将销毁类模块,vba,ms-access,Vba,Ms Access,我在Access项目中有一个名为MainForm的表单,有一个子表单名为subForm,在MainForm上还有许多按钮,同时,我创建了一个类模块来处理所有按钮的OnClick事件,模块名称为classButtons 类模块中的代码: Public WithEvents cButtons as Access.CommandButton Dim tmpValue as String Private Sub cButtons_Click() Select Case cButton.Nam

我在Access项目中有一个名为
MainForm
的表单,有一个子表单名为
subForm
,在
MainForm
上还有许多按钮,同时,我创建了一个类模块来处理所有按钮的
OnClick
事件,模块名称为
classButtons

类模块中的代码:

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
main表单的
Open
事件中,我有以下代码:

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
然后,一旦打开
MainForm
,所有3个按钮都可以正常工作,但一旦单击ButtonA或ButtonB,所有3个按钮都将停止工作

我试图从ButtonA和ButtonB中删除
子表单
操作,发现问题消失了,所以我猜
子表单
操作只是“销毁”了类模块


但我确实需要这些手术,有人有什么想法吗?谢谢

我要做的是在表单后面创建一个函数来处理按钮行为,将其称为HandleButtonClick(x为字符串),然后在每个按钮单击事件属性中:

=把手按钮单击(“按钮”)--根据需要更改按钮名称


此外,我总是将一个子表单容器命名为与它所包含的子表单不同的名称,例如ctrDetails。主窗体后面的代码必须引用子窗体容器名称。

感谢您的建议,函数是备份解决方案之一,如果无法解决此问题,我将放弃它并开始使用该函数。至于子窗体,
子窗体
只是一个例子,我确实为容器设置了不同的名称。很抱歉,在我发布这个问题之前,我没有做足够的测试,事实是:不仅是子窗体,即使我试图从主窗体上的组合框中获取值,或者只是重新查询主窗体,它也会破坏类模块。然后我尝试创建一个新的空白项目,一切正常,回到当前项目,不再工作。这两个项目之间的唯一区别是表,但我认为表中的数据不会对类模块产生任何影响,这简直是疯了!