首页 > 解决方案 > DoCmd.OpenForm 后焦点未设置在正确的字段上

问题描述

我打开一个表格如下。

    DoCmd.OpenForm "frmPatient", acNormal, , , acFormEdit, acWindowNormal

通常焦点到达的默认选项卡和字段都可以。但在某些情况下,我想将其设置为不同的字段。我尝试在下一行代码中这样做:

    Forms("frmPatient")("cmdLabReport").SetFocus

由于某种原因,这并不完全有效。显示了正确的表单选项卡,但错误的字段正在接收焦点。我怀疑这是因为可能仍在后台执行的干预代码。

标签: vbams-access

解决方案


如果您希望代码.SetFocus由于事件被触发而触发,请跟进一个或多个DoEvents.

访问是完全同步的,这意味着:

  1. 您的代码运行
  2. 任何侦听由您的代码触发的事件的代码都会运行

如果您的代码触发了一个事件,它会在您的代码完成或您手动运行时得到处理DoEvents,这允许 Access 处理事件。

请注意,任何相关的事情SendKeys都是麻烦。如果要将焦点设置到特定选项卡上的特定控件,请执行此操作,不要将焦点设置到选项卡,然后使用SendKeys将焦点设置到控件。


推荐阅读