首页 > 解决方案 > Access 2010 .SetFocus 命令语法有问题

问题描述

非常令人费解: 通过 vba 从另一个表单打开一个简单表单时,光标会移动到特定字段。但是,当此字段为 Null 时,每秒钟都会出现错误 2110。每次使用的语法都会更改,如下所示。

更令人费解的是: 单击“调试”后,错误证明是虚构的:在相应的代码行上,只需按 F5 或 F8 继续,程序就会正确结束,并在所需的焦点处正确结束。

我找到了一个临时解决方法,它不会生成错误消息,但如果可能的话,希望避免这种跛行编码:

'…
Debug.Print Me![MyTextField].Enabled    ' always True
Debug.Print Me.Name     ' always correct form
Me.Repaint
On Error Resume Next
       [MyTextField].SetFocus    ' without Me!
    Me![MyTextField].SetFocus
    ' Forms![MyForm]![MytextField] : same result as with Me!]
    ' one time error with Me! but not without Me!,
    ' next time vice versa, and so forth…
On Error GoTo 0
'…

当 [MyTextField] 不为 Null 时,两种语法都可以正常工作而不会产生错误。

这个 .SetFocus 命令有什么问题?“修复”数据库没有帮助。

标签: ms-accesserror-handlingnullsyntax-errorsetfocus

解决方案


您不能将焦点设置为具有焦点的控件。它会给你一个非常简单的方法来设置一个无限循环。

您必须先将焦点设置到另一个控件。


推荐阅读