【问题标题】:Lostfocus issue when clicking on close button单击关闭按钮时出现失焦问题
【发布时间】:2014-09-09 20:26:29
【问题描述】:

我是新来的。我也是 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. 之后出现运行时错误:

运行时错误“2110”:

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

带有“结束”、“调试”和“帮助”按钮。

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

【问题讨论】:

    标签: vba ms-access setfocus


    【解决方案1】:

    尝试将您的代码移动到 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 中有一个值。如果没有,它会抛出一个消息框,将焦点重新设置在它上面,然后取消 Unload 事件,让表单保持打开状态。

    【讨论】:

      【解决方案2】:

      在 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
      

      【讨论】:

      • 我觉得我不能很好地表达我的问题。因为你没有抓住重点。我的意思是如果用户不知道 ID 和 Pass 并且他想关闭应用程序并且如果他单击关闭按钮(关闭按钮表示窗口右上角的红色按钮与 Alt+F4 命令相关联,并且按钮关闭整个应用程序)消息弹出四次,然后出现调试错误。得到它???
      • 将 txtuserid_LostFocus() 更改为 txtuserid_AfterUpdate() 事件 每当控件获得焦点然后失去焦点时,无论您单击什么其他控件,LostFocus 都会触发。 AfterUpdate 只会在值更改后触发。单击其他控件(包括关闭按钮)不会更改该值,因此不会触发事件。
      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 2011-11-27
      • 2020-05-26
      • 1970-01-01
      相关资源
      最近更新 更多