【问题标题】:Dynamically activate "OnClick" function in command button in a subform in access 2007在access 2007的子窗体中的命令按钮中动态激活“OnClick”功能
【发布时间】:2012-05-23 02:55:26
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      Sub clearbtn()
          'ClearButton code here.
      End Sub
      

      现在,回到工作表模块,您可以在单击一行按钮时调用此代码:

      Private Sub ClearButton_Click()
          Call clearbtn
      End Sub
      

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

      【讨论】:

      • 哦,太好了!有用!非常感谢你们俩。一个问题,如果你们都不介意。使用通用模块而不是在每个子窗体中放置一个公共子然后从主窗体调用子有区别吗?因为我只在这个父表单中使用清除按钮代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多