在Access 2007中的子窗体中的命令按钮中动态激活“OnClick”功能

时间:2012-05-23 02:55:27

标签: ms-access vba ms-access-2007

我创建了一个包含3个子表单的表单,以显示用户的详细信息和用户拥有的库存。该表单使用户能够更新显示的详细信息。因此,每个子表单都有一个“保存”和“撤消”按钮。我正在尝试在父窗体上创建一个“全部清除”按钮,撤消所有3个子窗体中的所有更改。

我真的不想重新输入3“撤销”按钮中使用的相同代码,那么有没有办法利用3个按钮的Onclick功能?

我首先尝试了以下一个子表单:

Private Sub ClearAllParentForm_Click()
    Me.Subform1.Form.clearButton_Click
End Sub

但是,表单会调用子表单的beforeupdate事件(一个提示用户保存更新记录的消息框)。我也尝试将代码更改为Me.Subform1.Form.Undo,这会产生同样的问题。是否有某些地方我做错了或者我的概念错了?

很抱歉,最近才刚开始使用Microsoft Access 2007,所以很困惑。

2 个答案:

答案 0 :(得分:1)

您需要三个与按钮的click事件分开的子例程。让每个按钮调用各自的子程序或功能。然后单个按钮就可以调用这三个按钮。

答案 1 :(得分:0)

@JeffO是对的,但我想我会在更多的指导下扩展他所说的内容。

如果您在工作表模块中有以下内容:

Private Sub ClearButton_Click()
    'ClearButton code here.
End Sub

您需要将ClearButton代码移动到常规模块中的Sub。因此,在新模块中,您需要以下内容:

Sub clearbtn()
    'ClearButton code here.
End Sub

现在,回到Worksheet模块中,您可以通过一行按钮来调用此代码:

Private Sub ClearButton_Click()
    Call clearbtn
End Sub

对事件触发器进行这些更改将允许您在代码中的其他位置使用它们。这里隐含的教训是你不能从VBA中的其他地方调用事件触发器子,但是可以从事件触发器中调用其他子。