我有一些文本字段需要在 VBA 用户表单中进行验证。我希望发生的是,当用户退出文本框时,检查格式,如果失败,则将焦点移回该文本框(有效地停止退出事件)
Private Sub Form_RCAIncidentDay_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(Form_RCAIncidentDay.Value) > 2 Or Not IsNumeric(Form_RCAIncidentDay.Value) Then
Form_RCAIncidentDay.Value = ""
MsgBox "Please enter a valid day ('00' Format)", vbOKOnly, "Validation Error"
Form_RCAIncidentDay.SetFocus
End If
End Sub
验证很好,但焦点没有移回,并且光标显示在选项卡索引中的下一个字段中。
答案1
在之前添加此行End If
:
Cancel = True
您也可以删除该.SetFocus
行。
只是一个想法,但也许使用组合框来选择日期甚至日期会更容易?