我正在尝试突出TextBox
中输入的值。 TextBox
值表示日期格式DD-MM-YYYY中的日期值。我写了一些代码来验证插入的日期是否正常(在4月的例子31中)。
Hightlight本身不是问题,但我想在发生错误后立即执行此操作。因此,当我插入31-04-2014时,我应该收到消息“您插入了错误的日期”,并且日期值应该高亮显示。现在它向我显示消息,高亮值和焦点设置为另一个CommandButton
到目前为止,我做了类似的事情:
Private Sub data_faktury_AfterUpdate()
Dim dzien As Byte, miesiac As Byte
Dim rok As Integer
On Error GoTo blad:
dzien = Mid(data_faktury.Value, 1, 2)
miesiac = Mid(data_faktury.Value, 4, 2)
rok = Right(data_faktury.Value, 4)
Call spr_date(dzien, miesiac, rok)
Exit Sub
blad:
If Err.Number = 13 Then
If data_faktury <> "" Then
If Len(data_faktury) < 10 Then: MsgBox ("Źle wpisana data faktury.")
End If
End If
End Sub
第二个程序的代码:
Sub zle()
MsgBox ("Wybrałeś zły dzień")
With Faktura.data_faktury
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub
答案 0 :(得分:2)
评论有点长,所以这里有。基本原则是使用退出事件并在必要时取消。要防止在关闭表单时触发此操作,您需要使用标志变量 - 示例userform代码:
Private bSkipEvents As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If bSkipEvents Then Exit Sub
With TextBox1
If Not IsValidDate(.Text) Then
Cancel = True
MsgBox "Invalid date"
.SelStart = 0
.SelLength = Len(.Text)
End If
End With
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
bSkipEvents = True
End Sub