【问题标题】:Excel VBA: Highlight textbox value after error occursExcel VBA:发生错误后突出显示文本框值
【发布时间】: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


【解决方案1】:

评论有点长,所以这里是。基本原理是使用退出事件,必要时取消。为防止在您关闭表单时触发此事件,您需要使用标志变量 - 示例用户表单代码:

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

【讨论】:

  • 太棒了!完美运行!你可能是当天的英雄:)
猜你喜欢
  • 2014-02-03
  • 2018-10-03
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
相关资源
最近更新 更多