首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Access VBA:如何订阅来自其他vba代码而非用户交互的控件/字段更改

Access VBA:如何订阅来自其他vba代码而非用户交互的控件/字段更改
EN

Stack Overflow用户
提问于 2019-03-13 02:23:51
回答 1查看 141关注 0票数 0

我的处境很奇怪。我有一个带有子窗体的窗体。当子窗体中的值发生更改时,在update之后调用

代码语言:javascript
复制
If Not IsNull(Me.Parent) Then
   Me.Parent.ParentField.Value = Me.SubformField.Value
End If

在父窗体中,我希望ParentField中的更改触发另一个事件。遗憾的是,以编程方式进行更改既不会触发AfterUpdate,也不会触发onChange事件。

由于同一个子窗体在更多的父窗体中使用,因此我不能直接调用在afterUpdate上调用的方法

还有什么我可以“订阅”的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-03-13 04:30:28

作为一般规则,控件事件在被VBA更改时不会触发。这是有道理的,因为该控件可能会发生许多事件,因此确定何时以及何时不运行所有这些事件将是一场噩梦。

但是,您肯定可以在父窗体中调用和执行代码并使其运行。

因此,如果按钮或某些事件代码针对给定控件运行,则只需让事件代码调用父窗体中的公共sub。

因此单击按钮,或在更新后可能会:

代码语言:javascript
复制
Call MySub

MySub仅仅是按钮或事件代码在主窗体中调用的公共sub。

现在,在子窗体中,您可以执行以下操作:

代码语言:javascript
复制
Me.Parent.ParentField.Value = me.SomeField

Call me.Parent.MySub()

我想你也可以使用一个函数,然后:

代码语言:javascript
复制
My.Parent.MyFunctionToRun()

因此,在事件代码(或按钮)调用的父窗体中设置一个公共例程(子或函数)。然后只需在子窗体中调用与上述相同的例程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55128351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档