ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Testing for <Incorrect Dates (https://www.excelbanter.com/excel-programming/392964-testing-incorrect-dates.html)

Tim Childs

Testing for <Incorrect Dates
 
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



Rick Rothstein \(MVP - VB\)

Testing for <Incorrect Dates
 
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

Tim Childs

Testing for <Incorrect Dates
 
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




Tom Ogilvy

Testing for <Incorrect Dates
 
? 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






All times are GMT +1. The time now is 05:36 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com