我遇到了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
以下是我添加记录的代码&#39;按钮:
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()命令中?
答案 0 :(得分: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