【问题标题】:VBA to prevent empty fields in a user-entry formVBA 防止用户输入表单中出现空字段
【发布时间】:2014-09-15 18:38:17
【问题描述】:

我在使用 VBA 编码检查弹出表单中的空白字段时遇到问题。该代码应该检查表单上的空白字段,如果有空白表单则通知用户,如果没有,则添加记录。我有第二个功能可以保存记录,然后关闭表单。下面是我用来检查空格的代码:

Private Sub Form_BeforeUpdate(Cancel As Integer)

Dim ctrl As Control
Dim strMsg As String

For Each ctrl In Me.Controls

    If ctrl.Tag = "BlkChk" Then
        If IsNull(ctrl) Then
           strMsg = strMsg & "- " & ctrl.Name & vbCrLf
        End If
    End If

Next ctrl

If strMsg <> "" Then
    If vbOK = MsgBox("The following fields require a response:" & vbCrLf & vbCrLf & _
       strMsg & vbCrLf & vbCrLf, _
       vbOKOnly) Then
       Cancel = True

       Me.cboLookup.SetFocus
    End If

End If

End Sub

这是我的“添加记录”按钮的代码:

Private Sub cmdAddRecord_Click()
On Error GoTo cmdAddRecord_Click_Err

    DoCmd.Save
    DoCmd.Close , ""

cmdAddRecord_Click_Exit:
    Exit Sub

cmdAddRecord_Click_Err:
    MsgBox Error$
    Resume cmdAddRecord_Click_Exit

End Sub

第一段代码工作正常,但是当我单击“添加记录”按钮并执行第二段代码时,它会通知用户两次,然后关闭表单而不保存,无论是否填充了所有空白在与否。我在网上浏览了几个关于其他人如何设置它的例子,看看我是否可以实施他们的想法,但这对我不起作用。我认为这可能与“添加记录”代码有关,但我似乎无法弄清楚。我应该如何解决这个问题?我应该重组我的编码还是应该将它们全部组合成一个 On_Click() 命令?

【问题讨论】:

    标签: ms-access vba ms-access-2010


    【解决方案1】:

    您没有正确使用MsgBox() 方法。试试这个:

    If strMsg <> "" Then
       MsgBox "The following fields require a response:" & vbCrLf & vbCrLf & _
           strMsg & vbCrLf & vbCrLf, vbOKOnly
    
       Me.cboLookup.SetFocus
       Cancel = True
    
    End If
    

    【讨论】:

    • 嗯,它仍然把我踢出表单而不保存它。它会告诉我哪些字段需要回复,一旦我点击“确定”,它就会再次显示给我。第二次单击“确定”将我踢出表格。我的“添加记录”代码会覆盖我的更新前代码并继续关闭表单吗?
    • 如果禁用“添加记录”按钮并让表单按设计设置记录(在关闭表单或移动到另一条记录时保存)怎么办?至少用于测试。一切都更好了吗?
    • 实际上效果更好一些!我最初禁用了控制框,以免混淆用户,并将其替换为自定义“关闭按钮”,通知记录已以某种方式更改并询问用户是否要保存它。但是,仅使用实际的关闭框退出会通知用户此时无法保存记录,并提示输入是/否以退出。这基本上实现了我的两个自定义按钮应该做的事情。谢谢 Smandoli,这对我有很大帮助!
    • 哇!您也可以巧妙地处理关闭事件。创建一个处理验证并返回TrueFalse 的私有函数,然后从不同的表单事件中调用该函数,以便始终发出有用的警告。抱歉,我无法提供更多详细信息,但我现在还不能带着信心粗略地编写代码。
    • 这个主意不错,我看看我能不能实现!再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2019-01-28
    相关资源
    最近更新 更多