如"041009"这样一个字符04表示年,10表示月,09表是日,但在用ISDATE()进行判断时,他是以月日年为依据的判断的,怎样才能按我的要求进行判断?

解决方案 »

  1.   


    Dim aa As String
    aa = "20041009"
    aa = Mid(aa, 1, 4) & "-" & Mid(aa, 5, 2) & "-" & Mid(aa, 7, 2)
    'MsgBox aa
    If IsDate(aa) = True Then
        msgbox year(aa) & 年 & month(aa) & 月 & day(aa)  & 日
      
        MsgBox "是有效的日期"
    Else
        MsgBox "不是有效的日期"End If
      

  2.   

    首先谢谢 zyg0(影子(努力节食争取减10斤)(可是真的很饿 )
    我的意思是在ISDATE()函数中判断时就是判断出来,如041301不是有效日期,而041201是有效日期,但现在我用ISDATE()判断出上面两个都是有效日期
      

  3.   

    Option ExplicitPrivate Sub Form_Load()
    Dim aa As String
    aa = "20041309"
    aa = Mid(aa, 1, 4) & "-" & Mid(aa, 5, 2) & "-" & Mid(aa, 7, 2)
    'MsgBox aa
    If IsDate(aa) = True Then
        MsgBox Year(aa) & "年" & Month(aa) & "月" & Day(aa) & "日"
      
        MsgBox "是有效的日期"
    Else
        MsgBox "不是有效的日期"End IfEnd Sub
    我测试了这样显示的不是有效的日期"
    我主要是先把你的字符串转化成日起类型在判断的
      

  4.   

    真不好意思,上一个代码有错误,这个我调试了,没问题
    Option ExplicitPrivate Sub Form_Load()
    Dim aa As String
    aa = "20041309"
    aa = Right(Left(aa, Len(aa) - 4), Len(aa) - 4) & "-" & Right(Left(aa, Len(aa) - 2), 2) & "-" & Right(aa, 2)
    'MsgBox aa
    If IsDate(aa) = True Then
        MsgBox Year(aa) & "年" & Month(aa) & "月" & Day(aa) & "日"
      
        MsgBox "是有效的日期"
    Else
        MsgBox "不是有效的日期"End IfEnd Sub
      

  5.   

    若年是2位的,不能用ISDATE()进行判断呀,如041301不是有效日期,而041201是有效日期,但现在我用ISDATE()判断出上面两个都是有效日期,下面是我的代码(运行结果是日期是有效的)
    Private Sub Command1_Click()
    Dim mstring As String
    Dim mstr As String
    Dim mdate As Date
    mstring = "041312"
    mstr = Mid(mstring, 1, 2) & "-" & Mid(mstring, 3, 2) & "-" & Mid(mstring, 5, 2)
    'mdate = Format(mstr, "YYYY-MM-DD")
    If IsDate(mstr) = True Then
       MsgBox "日期有效" & mstr
    Else
       MsgBox "日期无效" & mstr
    End If
    End Sub
      

  6.   

    不用那么复杂,这样就一了百了:)
    mstr = Mid(mstring, 3, 2) & "-" & Mid(mstring, 5, 2) & "-" & Mid(mstring, 1, 2)
      

  7.   

    Private Sub Command1_Click()
    Dim aa As String
    aa = "041009"
    aa = Format(aa, "000000")
    aa = Mid(aa, 1, 2) & "-" & Mid(aa, 3, 2) & "-" & Mid(aa, 5, 2)
    aa = Format(aa, "yyyy-mm-dd")
    If IsDate(aa) = True Then
        MsgBox
      
        MsgBox Year(aa) & "年" & Month(aa) & "月" & Day(aa) & "日" & vbCrLf & "是有效的日期"
    Else
        MsgBox Year(aa) & "年" & Month(aa) & "月" & Day(aa) & "日" & vbCrLf & "不是有效的日期"End If
    End Sub
      

  8.   

    Private Sub Command1_Click()
    Dim aa As String
    aa = "041009"
    aa = Format(aa, "000000")
    aa = Mid(aa, 1, 2) & "-" & Mid(aa, 3, 2) & "-" & Mid(aa, 5, 2)
    aa = Format(aa, "yyyy-mm-dd")
    If IsDate(aa) = True Then
        MsgBox Year(aa) & "年" & Month(aa) & "月" & Day(aa) & "日" & vbCrLf & "是有效的日期"
    Else
        MsgBox Year(aa) & "年" & Month(aa) & "月" & Day(aa) & "日" & vbCrLf & "不是有效的日期"End If
    End Sub
      

  9.   

    aa = Mid(aa, 1, 2) & "-" & Mid(aa, 3, 2) & "-" & Mid(aa, 5, 2)
    aa = Format(aa, "yyyy-mm-dd")
    IsDate(aa) 
      

  10.   

    TO: zyg0(影子(努力节食争取减10斤)(可是真的很饿)) 
    这个是你写的代码,我在aa中赋值"041309"就不行,不是判断出是有效的日期
    Dim aa As String
    aa = "041309"
    aa = Right(Left(aa, Len(aa) - 4), Len(aa) - 2) & "-" & Right(Left(aa, Len(aa) - 2), 2) & "-" & Right(aa, 2)
    'MsgBox aa
    If IsDate(aa) = True Then
        MsgBox Year(aa) & "年" & Month(aa) & "月" & Day(aa) & "日"
      
        MsgBox "是有效的日期"
    Else
        MsgBox "不是有效的日期"End If
    另外不能用format()函数转换,因在如果转换一个无效的日期就出错
      

  11.   

    有没有一个设置系统日期格式的函数,如设置成我们日常的"年月日"格式,在ISDATE()中出按照设置的系统日期进行判断?
      

  12.   

    这个好像不行
    你把它的年月日截出来再&再来,就行呀!