Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have somedates in this text/label format (yyyy-mm-dd) i.e. not numbers,
2007-02-01 2007-01-33 2007-02-01 I want to test for valid dates. The basic approach I was using was this: Sub foo() Dim sDateStr As String sDateStr = "2007-01-33" Debug.Print DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2)) Debug.Print IsDate(DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2))) End Sub But pseudo-dates such as 33rd January 2007 (see second entry) get interpreted as 2nd February 2007 and *pass* the test. What is the best way of testing for such pseudo-dates, please? Thanks in advance Tim |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have somedates in this text/label format (yyyy-mm-dd) i.e. not numbers,
2007-02-01 2007-01-33 2007-02-01 I want to test for valid dates. The basic approach I was using was this: Sub foo() Dim sDateStr As String sDateStr = "2007-01-33" Debug.Print DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2)) Debug.Print IsDate(DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2))) End Sub But pseudo-dates such as 33rd January 2007 (see second entry) get interpreted as 2nd February 2007 and *pass* the test. What is the best way of testing for such pseudo-dates, please? If IsDate(sDateStr) Then ' Date is OK Else ' Date is bogus End If Rick |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Rick
thanks - very straightforward. I just wish I had been able to puzzle it out myself! bw Tim "Rick Rothstein (MVP - VB)" wrote in message ... I have somedates in this text/label format (yyyy-mm-dd) i.e. not numbers, 2007-02-01 2007-01-33 2007-02-01 I want to test for valid dates. The basic approach I was using was this: Sub foo() Dim sDateStr As String sDateStr = "2007-01-33" Debug.Print DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2)) Debug.Print IsDate(DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2))) End Sub But pseudo-dates such as 33rd January 2007 (see second entry) get interpreted as 2nd February 2007 and *pass* the test. What is the best way of testing for such pseudo-dates, please? If IsDate(sDateStr) Then ' Date is OK Else ' Date is bogus End If Rick |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
? isdate("3rd January 2007")
False is that what you meant? I guess I misunderstood your intentions. -- Regards, Tom Ogilvy "Tim Childs" wrote: Hi Rick thanks - very straightforward. I just wish I had been able to puzzle it out myself! bw Tim "Rick Rothstein (MVP - VB)" wrote in message ... I have somedates in this text/label format (yyyy-mm-dd) i.e. not numbers, 2007-02-01 2007-01-33 2007-02-01 I want to test for valid dates. The basic approach I was using was this: Sub foo() Dim sDateStr As String sDateStr = "2007-01-33" Debug.Print DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2)) Debug.Print IsDate(DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2))) End Sub But pseudo-dates such as 33rd January 2007 (see second entry) get interpreted as 2nd February 2007 and *pass* the test. What is the best way of testing for such pseudo-dates, please? If IsDate(sDateStr) Then ' Date is OK Else ' Date is bogus End If Rick |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Dates Incorrect in Chart | Charts and Charting in Excel | |||
Testing | Excel Discussion (Misc queries) | |||
Reformatting incorrect dates | Excel Programming | |||
testing | New Users to Excel | |||
testing | Excel Worksheet Functions |