【问题标题】:VBA text box input maskVBA 文本框输入掩码
【发布时间】:2009-07-16 05:47:43
【问题描述】:

我在文本框中有两个日期和时间验证,如下所示:

00/00\ 00:00;0;0;_

它需要 (dd/mm hh:mm) 并且工作正常

但有时我会放

34/34 56:78 需要,但不应该

日期不得超过 31、月 12 时间 24 和分钟 59

请帮忙

【问题讨论】:

  • 这是一个日期瞬间还是一个持续时间,例如如果他们输入 31/02 并且您发现您无法将其转换为任何给定年份的 2 月 31 日怎么办?

标签: ms-access vba syntax validation


【解决方案1】:

我昨天刚刚在信用卡到期日期字段中遇到了这个问题。我愚蠢地将 00/0000 作为输入掩码更改为 00/00,并遇到了您遇到的问题。问题是如果第二对数字是有效日期,它将被解释为日期,并且默认提供当前年份。因此,如果您输入:

  06/09

对于 2009 年 6 月,它将被存储为:

  06/09/2009

另一方面,如果你输入:

  06/34

它会被解释为

  06/01/1934

据我所知,您做自己想做的事情的唯一方法是使用 4 位数的年份。

【讨论】:

    【解决方案2】:

    使用IsDate()验证日期

    Public Function ValidateDate(input As String) As Boolean    
    
        ValidateDate = IsDate(input)
    
    End Function
    

    这将返回一个布尔值,如果输入是有效的日期字符串,则返回 True,否则返回 False。最大值是

    天:31

    月:12

    小时:23

    最低:59

    秒:59

    【讨论】:

    • 对不起,我编辑了我的问题;这是一个输入掩码而不是验证
    • 是表格字段或表单文本框上的输入掩码吗?您仍然需要对表单进行某种形式的验证,并且可以将此功能放在 On Exit 事件中
    • 感谢您的回复;我只需要输入掩码没有验证是否可以用输入掩码限制这个?
    【解决方案3】:

    Access 中的输入掩码不能限制在值范围内,例如 RegExp。做到这一点的唯一方法是使用一些验证(如果您愿意,可以在按键上完成)。

    【讨论】:

      【解决方案4】:

      以不同的方式解决问题。给用户一个可供选择的日历。你可以使用 Allen Browne 的 Popup Calendar

      禁用并锁定文本字段,您可以保证格式正确。

      【讨论】:

        猜你喜欢
        • 2014-11-03
        • 1970-01-01
        • 1970-01-01
        • 2011-03-21
        • 1970-01-01
        • 2016-12-01
        • 2013-11-02
        • 1970-01-01
        • 2022-06-10
        相关资源
        最近更新 更多