excel中的VB,如何将时间为yyyymmdd的格式进行判断

比如我输入20141908,因为19不是正确月份,因此抛出异常。但我写的抛不出异常代码如下rdate=Left(Cells(row,3).Value,4)+"-"+Mid... 比如 我输入 20141908,因为19不是正确月份,因此抛出异常。但我写的抛不出异常
代码如下
rdate = Left(Cells(row, 3).Value, 4) + "-" + Mid(Cells(row, 3).Value, 5, 2) + "-" + Right(Cells(row, 3).Value, 2)
If IsDate(rdate) = False Then

IsNumberValue = "行" & row & "列 3 请输入正确的日期,数据格式:YYYYMMDD,如:20140808" & "。 "
result = False
End If
If (CDate(rdate) < Format(Now(), "yyyy-MM-dd")) Then
IsNumberValue = "行" & row & "列 3 截止时间小于当前时间!"
result = False
End If
If (Cells(row, column).Value < Format(Now(), "yyyymmdd")) Then
MsgBox "行" & row & "列" & column & " end date小于当前时间!"
result = False
End If
Format(Now(), "yyyymmdd") 是为20140912 么? Cells(row, column).Value = 20141109 时间是大于当前时间的,但是抛异常了
展开
 我来答
草堂春日迟迟
2014-09-12 · TA获得超过278个赞
知道小有建树答主
回答量:405
采纳率:100%
帮助的人:284万
展开全部
得把判断写在事件里面.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
Row = Target.Row
rdate = Left(Cells(Row, 3).Value, 4) + "-" + Mid(Cells(Row, 3).Value, 5, 2) + "-" + Right(Cells(Row, 3).Value, 2)
If IsDate(rdate) = False Then
MsgBox "行" & Row & "列 3 请输入正确的日期,数据格式:YYYYMMDD,如:20140808" & "。 "
End If
End If
End Sub
追问
Format(Now(), "yyyymmdd") 是为20140912 么?  Cells(row, column).Value = 20141109 时间是大于当前时间的,但是抛异常了
追答
CDate(rdate) < Now()  即可. CDate(rdate) < Format(Now(), "yyyy-MM-dd")
错误在 日期与字符串比较.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式