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