0

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

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

我首先使用一个子表单尝试了以下操作:

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

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

抱歉,最近才开始使用 Microsoft Access 2007,所以对一些东西很困惑。

4

2 回答 2

1

您需要三个与按钮的单击事件分开的子例程。让每个按钮调用它们各自的子例程或函数。然后一个按钮可以调用所有三个。

于 2012-05-23T14:07:30.370 回答
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 的其他地方调用事件触发器子程序,但可以从事件触发器内调用其他子程序。

于 2012-05-23T14:30:12.320 回答