【问题标题】:Excel VBA userform existing date validationExcel VBA 用户表单现有日期验证
【发布时间】:2019-08-26 05:11:08
【问题描述】:

我目前正在处理一个必须在其中输入日期的文本框 (textbox1)。但是,到目前为止,还可以输入一个不存在的日期,例如 40-40-2019。有没有办法仅使用现有日期验证 textbox1?我目前使用欧洲日期条目,所以 dd-mm-yyyy。下面的代码将日期更改为标准格式:

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
 Me.TextBox1 = Format(Me.TextBox1, "DD-MM-YYYY")
End Sub 

我希望输出只是现有的日期函数

【问题讨论】:

    标签: excel vba validation date userform


    【解决方案1】:

    使用Isdate() 测试日期:

    Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
        If Isdate(Me.TextBox1.Text) then
            Me.TextBox1.Text = Format(Me.TextBox1.Text, "DD-MM-YYYY")
        Else
            '...
        End if
    End Sub 
    

    https://www.techonthenet.com/excel/formulas/isdate.php

    【讨论】:

    • 嗨,这无助于验证日期是否存在,对吗?
    • @WouterGroeneneweg,不,但假设您无论如何都必须手动修复已经填写的日期。如果这是一个庞大的数据集,您可以在列的循环中执行 Isdate 并突出显示需要修复的日期。
    • 是的,这会告诉您日期是否“存在”,即是否有效。在 Else 语句中,您决定如何响应无效日期。您可以删除现有文本或向用户发送消息。
    • @D_Bester 非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2017-06-04
    相关资源
    最近更新 更多