【VBA研究】如何检查文本框中输入的日期

iamlaosong文

应用中经常会对文本框的输入内容进行检查,如果不符合要求,给出提示,保留在文本框中重新输入,如何编程?

如果输入的是日期,如何检查?下面是一个输入日期的窗体,输入起止日期并进行检查,输入用8位数字,这样输入比较快,输入后用DateSerial转换成日期格式(DateSerial是个很有意思的函数,其功能是将参数年月日转换成一个有效的日期。虽然要求输入规范的年月日,不过,输入不规范也没关系,它可以将输入不规范的日期,转换成规范的日期,DateSerial(2017,04,31)转换成2017-5-1),界面如下图:


用文本框退出事件对日期进行检查,当日期有误需要留在文本框中时,令参数cancel=True即可,代码如下:

'输入日期,确定按钮
Private Sub CommandButton1_Click()
    StartDate = TextBox1.Value
    EndDate = TextBox2.Value
    TextBox1.Value = ""
    TextBox2.Value = ""
    Input_Date.Hide
End Sub
'输入日期,取消按钮
Private Sub CommandButton2_Click()
    TextBox1.Value = ""
    TextBox2.Value = ""
    StartDate = ""
    EndDate = ""
    Input_Date.Hide
End Sub
'输入日期,初始化文本框
Private Sub TextBox1_Enter()
    If TextBox1.Value = "" Then TextBox1.Value = Format(Date, "yyyymmdd")
End Sub
'输入日期,离开起始日期
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox1.Value Like "########" Then
        TextBox2.Value = TextBox1.Value
        TextBox1.Value = DateSerial(Left(TextBox1.Value, 4), Mid(TextBox1.Value, 5, 2), Right(TextBox1.Value, 2))
    Else
        '日期有误,留在输入框
        MsgBox "日期有误,请重新输入!", vbOKOnly, "iamlaosong"
        TextBox1.Value = Format(Date, "yyyymmdd")
        Cancel = True
    End If
End Sub
'输入日期,离开截止日期
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox2.Value Like "########" Then
        TextBox2.Value = DateSerial(Left(TextBox2.Value, 4), Mid(TextBox2.Value, 5, 2), Right(TextBox2.Value, 2))
        If TextBox2.Value < TextBox1.Value Then
            MsgBox "截止日期不能小于起始日期!", vbOKOnly, "iamlaosong"
            Cancel = True
        End If
    Else
        MsgBox "日期有误,请重新输入!", vbOKOnly, "iamlaosong"
        TextBox2.Value = Format(TextBox1.Value, "yyyymmdd")
        Cancel = True
    End If
End Sub


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值