离开文本框时出现VBA Excel错误

离开文本框时出现VBA Excel错误,vba,excel,error-handling,Vba,Excel,Error Handling,我想用一个半透明的文本来显示日期的输入格式。添加代码后,我发现如果我单击我的txtA_DateCR文本框,然后单击另一个文本框或命令按钮,错误将继续提示 'This was the code that works fine before adding the following 2 below. Private Sub txtA_DateCR_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Mid(txtA_DateCR.Va

我想用一个半透明的文本来显示日期的输入格式。添加代码后,我发现如果我单击我的txtA_DateCR文本框,然后单击另一个文本框或命令按钮,错误将继续提示

'This was the code that works fine before adding the following 2 below.
Private Sub txtA_DateCR_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    If Mid(txtA_DateCR.Value, 4, 2) > 12 Then
        MsgBox "Invalid date, make sure format is (dd/mm/yyyy)", vbCritical
        txtA_DateCR.Value = vbNullString
        txtA_DateCR.SetFocus
        Exit Sub
    End If

    dDate = DateSerial(Year(Date), Month(Date), Day(Date))
    txtA_DateCR.Value = Format(txtA_DateCR.Value, "dd/mm/yyyy")
    dDate = txtA_DateCR.Value
End Sub

'Supposed to change the textbox values to light grey and have the value of dd/mm/yyyy
Private Sub txtA_DateCR_AfterUpdate()

    With txtA_DateCR
    If .Text = "" Then
    .ForeColor = &HC0C0C0
    .Text = "dd/mm/yyyy"
    End If
    End With

End Sub

'When user clicks here, the value of dd/mm/yyyy will disappear and font colour will return back to black
Private Sub txtA_DateCR_Enter()

    With txtA_DateCR
    If .Text = "dd/mm/yyyy" Then
    .ForeColor = &H80000008
    .Text = ""
    End If
    End With

End Sub

Private Sub UserForm_Initialize()

txtA_DateCR.ForeColor = &HC0C0C0
txtA_DateCR.Text = "dd/mm/yyyy"
cmdEnter.SetFocus

End Sub


作为总结,我只希望在用户输入错误的日期格式时弹出错误消息,当我从文本框中单击时不会弹出错误消息。

然后尝试对Enter按钮的单击事件进行验证。您是否尝试添加
如果txtA_DateCR.Value=“”,然后在
如果Mid(txtA_DateCR.Value,4,2)之前退出Sub
>12然后…
?迪斯的方法奏效了!谢谢你们两个!但似乎无法为您选择正确的答案@deeI很高兴这有帮助:-)@Edward除非有人提供答案,否则你无法标记答案。目前,他们已经能够通过简单的评论建议来解决这个问题:)