【问题标题】:Check if field is null or blank before closing form on Access using VBA在使用 VBA 关闭 Access 上的表单之前检查字段是否为空或空白
【发布时间】:2019-12-13 23:55:51
【问题描述】:

我一直在使用 VBA 代码来解决这个问题,以在关闭表单之前检查该字段是否为空。如果该字段为空,我希望它显示一个是/否消息框。 我遇到的问题是,当我在消息出现后单击No 时(如果该字段为空白),它会继续关闭表单。相反,当我单击No 时,我希望将焦点设置在需要处理的字段上。

这是我的代码:

Private Sub Close_Click()

If IsNull(cboTxtBx) Then
        MsgBox("Do you want to continue?", vbYesNo, "X is Blank!")
        If vbYes Then
            DoCmd.Close
        Else
            cboTxtBx.SetFocus
        End If
Else
    DoCmd.Close
End If

End Sub

我也将IsNull() 替换为Len(cboTxtBx.value & "") = 0,但仍然遇到同样的问题。
我还删除了最后一个DoCmd.Close 语句,但一旦我点击No,表单仍然会关闭。

我确信解决方案在我的代码序列中,但我不精通 VBA,我正在努力让这段代码正常工作。

一个小注释,cboTxtBx 是一个组合框。不确定这是否会以任何方式中断代码。

【问题讨论】:

    标签: vba ms-access ms-access-2016


    【解决方案1】:

    在你回答消息框后,它的结果不会被解释,所以代码继续。

    你必须像这样使用它来真正检查消息框的结果:

    If MsgBox("Do you want to continue?", vbYesNo, "X is Blank!") = vbYes Then
        DoCmd.Close
    Else
        cboTxtBx.SetFocus
    End If
    

    【讨论】:

    • 啊,我认为解决方案很简单。根据您的反馈,这最终对我有用(谢谢!):Private Sub Close_Click() If IsNull(cboTxtBx) Then If MsgBox("Do you want to continue?", vbYesNo, "X is Blank!") = vbYes Then DoCmd.Close Else cboTxtBx.SetFocus End If Else DoCmd.Close End If End Sub
    • @aquadratic:不客气。如果您发现它解决了您的问题,请考虑accepting the answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多