非常困惑: 通过vba从另一个表单中打开一个简单表单后,光标将移至特定字段。 但是,当此字段为Null时,会出现第二次错误2110。每次使用的语法都会更改,如下所示。
更令人困惑的是: 单击“调试”后,该错误被证明是虚构的:在相应的代码行上,只需简单地继续按F5或F8键,该过程就可以正确地以所需的焦点结束。
我找到了一个临时的解决方法,该临时方法不会生成错误消息,但希望尽可能避免使用这种 limping 编码:
'…
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命令有什么问题? “修复”数据库无济于事。
答案 0 :(得分:0)
您不能将焦点设置为具有的控件。这将为您提供一个建立无限循环的非常简单的方法。
您必须先将焦点设置到另一个控件上。
答案 1 :(得分:0)
敏蒂的权利。一个简单的解决方法是在if语句中执行此操作,或者创建一个布尔值以查看IsNull(fieldhere)= true,然后在此处退出sub或您的操作。或者更简单地尝试:
if MyTextField.gotfocus = true then
do something
else
MyTextField.setfocus
我最近以类似的方式遇到了这个问题,不得不创建一个公共布尔函数并在加载事件上对其进行测试。请注意,我是Access的初学者,因此可能有许多更好的方法可以完成此操作:)