我在Excel2007中有一个包含许多文本框的用户窗体。其中一些需要日期,我想验证日期是否以正确的格式输入。如果没有,我想保留特定文本框中的焦点;突出显示错误的条目并允许用户重新键入正确的日期。大多数此功能都有效,但我无法解决的一个问题是错误日期' - 虽然显然选择了立即使用'删除'确认消息框后确实删除了它 - 不会突出显示。
这是我的代码:
Private Sub txtDOB_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If txtDOB.Text = "" Then Exit Sub
If IsDate(txtDOB.Text) Then
txtDOB.Value = Format(txtDOB.Text, "dd-MMM-yyyy")
Else
MsgBox "Does not appear to be a valid date. A date should be in the format dd/mm/yy i.e 25/12/13.", vbInformation, "Invalid Date"
Cancel = True
With txtDOB
.SetFocus 'probably not necessary after setting Cancel=True
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End Sub
对于类似问题的许多回复,我看起来很长很难,但似乎都没有解决这个简单的问题!并不是我的错误日期ISN被选中 - 正如我在上面提到的那样。只是虽然选择了,但没有明显的标志'通过文本向用户突出显示此特定文本现已准备好并且能够更正。我相信这个困境有一个简单的答案,如果有人能告诉我它是什么,我将非常感激!
答案 0 :(得分:0)
我在更改数据后没有更新表单时出现问题,我只用Repaint
解决了这个问题。
具有讽刺意味的是,我试图取消选择文字,因此它没有突出显示: - )
答案 1 :(得分:0)
我想我刚刚解决了自己的问题!如果我确保文本框的HideSelection属性是 false 代码 - 最重要的是突出显示有效!