【问题标题】:How do I get to a control in a subform如何访问子窗体中的控件
【发布时间】:2021-03-29 07:26:40
【问题描述】:

我想转到子窗体中的控件以便能够输入数据。 我可以制作一个 DoCmd.OpenForm 但随后我会在主表单顶部获得一个额外的子表单副本。我宁愿直接进入子表单。我尝试了很多选择,我认为以下是最有希望的

Me.Subform.SetFocus
Me.Subform.Form.mycotrol.SetFocus
DoCmd.GoToControl "mycontrol"

这段代码并没有停留在子窗体让我输入数据。我也尝试过 Me!Subform,结果相同。我曾想过添加一个 Stop 语句,但是当数据已输入到子表单时,我不知道如何恢复执行。 我想有一些我没有理解的东西。有人可以帮我吗? 比恩·韦罗

【问题讨论】:

  • 在设计模式下,将控件的制表位设置为true,并将制表位索引设置为零。然后对子表单执行相同的操作。打开父窗体后,控件应该具有焦点。

标签: vba ms-access setfocus subform


【解决方案1】:

VBA 是单线程的。它不能以这种方式与 Access 表单一起使用。您可以使用返回值的模态弹出窗口来做到这一点,例如InputBox。访问表单不会以这种方式返回值。

如果您真的想逐步使用 Access 表单,那么您需要连接到表单事件。对于这种特定情况,我认为您想要的事件是TextBox.AfterUpdate

https://docs.microsoft.com/en-us/office/vba/api/access.textbox.afterupdate-event

您可以在每个控件对象上设置不同的事件,允许您在每次输入后运行代码。

【讨论】:

  • to HackSlash:对我来说,模式弹出窗口或多或少与获取我可以通过 DoCmd.Openform 方法获取的子表单的另一个实例相同。
【解决方案2】:

先设置焦点到子窗体控件,然后窗体中的控件:

Me!YourSubformControlName.SetFocus
Me!YourSubformControlName.Form!YourControl.SetFocus

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    相关资源
    最近更新 更多