【发布时间】:2014-07-24 17:43:44
【问题描述】:
我正在尝试突出显示 TextBox 中输入的值。 TextBox 值以日期格式 DD-MM-YYYY 表示日期值。我写了一些代码来验证插入日期是否正确(例如 4 月 31 日)。
Hightlight 本身不是问题,但是我想在发生错误后立即执行此操作。因此,当我插入 2014 年 4 月 31 日时,我应该收到消息“您插入了错误的日期”,并且日期值应该突出显示。现在它向我显示消息、突出显示值和焦点设置为另一个 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
【问题讨论】:
-
改用 Exit 事件,设置 Cancel = True,然后使用 Selstart 和 Sellength 代码(无需设置焦点)
-
...但是如何将信息从
Sub zle()发送到Exit()事件?只有在处理Sub zle()时才会出现此高亮显示。 -
男性验证例程一个函数,如果日期有效则返回true。退出事件将日期字符串传递给函数 - 如果验证失败,则退出代码取消并设置焦点,而不是验证例程。
-
好的提示,谢谢。然而出现了一个问题。当我关闭我的
UserForm并且我插入了错误的日期时,Exit事件被处理并告诉我日期是错误的。之后关闭UserForm。我想避免看到该消息,换句话说,当我点击Useform上的“X”按钮时不处理此事件。
标签: excel vba textbox highlight