MS Access运行时错误2110

时间:2014-07-18 16:04:17

标签: vba access-vba ms-access-2007 runtime-error setfocus

我是新来的。我也是MS Access的新手。我的问题是,当我点击MS Access的关闭按钮时,会发生以下情况:

  1. 我正在使用vba代码在用户ID文本框的LostFocus事件中显示消息。这是代码

    Private Sub txtuserid_LostFocus()
    
    If Len(txtuserid.Value & nullvalue) = 0 Then
    MsgBox "You can not leave it blank."
    txtpswd.SetFocus
    txtuserid.SetFocus
    Else
    txtuserid = txtuserid.Value
    End If
    
    End Sub
    

    消息显示4次。

  2. 之后出现运行时错误:

  3.   

    运行时错误' 2110':

         

    图书馆系统无法将焦点移至控件txtuserid。

    使用"结束","调试"和"帮助"的按钮。

    所以我的问题是,有没有办法在退出应用程序时停止VBA代码,或者将SetFocus更好的方法停止到所需的字段。

2 个答案:

答案 0 :(得分:0)

尝试将代码移动到Unload事件,如下所示:

Private Sub Form_Unload(Cancel As Integer)

    If Nz(Me.txtuserid, "") = "" Then
        MsgBox "You can not leave User ID blank."
        Me.txtuserid.SetFocus

        Cancel = True
    End If

End Sub

在表单关闭之前,它将检查以确保txtuserid中有值。如果没有,它将抛出一个消息框,如此,将焦点重新设置在其上,并取消卸载事件,使表单保持打开状态。

答案 1 :(得分:0)

在yourButton_Click事件中,确保在尝试登录时存在某些内容:

If Len(txtuserid & "") = 0 Then
    MsgBox "Missing user id"
    txtuserid.SetFocus
    Exit Sub
End If

If Len(txtPassword & "") = 0 Then
    MsgBox "Missing password"
    txtPassword.SetFocus
    Exit Sub
End If