【Excel VBA】检查日期输入校验函数
发布时间
阅读量:
阅读量
纲举目张
- 说明
- 代码code
- 使用说明
- 另外说明
说明
在之前的博文中讲述了身份证号校验功能函数和银行卡信用卡卡号校验功能函数,主要用于检查身份证号和银行卡信用卡卡号录入是否正确,这里再为大家介绍一下用于检查日期录入是否正确的函数。
代码code
Sub 检查日期录入()
Dim strDate As String
strDate = "20210431"
Dim bolCheck As Boolean
bolCheck = CheckDate(strDate)
End Sub
Function CheckDate(DateString As String) As Boolean
CheckDate = False '首先为函数设定False的结果,具体返回结果会根据后续的执行情况而定
If Len(DateString) <> 8 Then
'如果传入参数的长度不是8,则返回False
CheckDate = False
Exit Function
End If
Dim yyyy As Integer
yyyy = Val(Left(DateString, 4)) '获取年份
Dim mm As Integer
mm = Val(Mid(DateString, 5, 2)) '获取月份
Dim dd As Integer
dd = Val(Right(DateString, 2)) '获取日
If mm > 0 And mm < 13 Then
If dd > 0 Then
Select Case mm
Case 2
If (yyyy Mod 4) <> 0 Or (yyyy Mod 100) = 0 And (yyyy Mod 400) <> 0 Then
'如果不是闰年的情形
If dd < 29 Then
CheckDate = True
Exit Function
Else
CheckDate = False
Exit Function
End If
End If
'如果是闰年
If dd < 30 Then
CheckDate = True
Exit Function
Else
CheckDate = False
Exit Function
End If
Case 4, 6, 9, 11
If dd < 31 Then
CheckDate = True
Exit Function
Else
CheckDate = False
Exit Function
End If
Case Else
If dd < 32 Then
CheckDate = True
Exit Function
Else
CheckDate = False
Exit Function
End If
End Select
End If
End If
End Function
使用说明
sub 是主入口,设置好要检查的日期字符串,然后将要检查的日期字符串作为参数传入CheckDate函数,如果日期符合正常日期则返回True,否则返回False。当然本例中传入的日期字符串“20210431”返回的结果则是False。
另外说明
其实在VBA中检查日期是否正确是有函数的,那就是IsDate,使用起来也很简单,具体见IsDate 函数。
既然VBA自带了检查日期函数,我们又为什么费力的造轮子呢?其实最开始我在使用VBA的时候并没有找到这个函数,所以才费力的编写了该轮子。但是通过自己的编写和不断调试、测试,更加深入的了解了VBA,利用现有的常用函数也可以写出实现复杂功能的函数,亲自将闰年的计算变成了VBA的算法,打破了对算法的恐惧,成就感满满的!
全部评论 (0)
还没有任何评论哟~
