Microsoft KB Archive/213665

= XL2000: IsDate Function Incorrectly Identifies Some Expressions =

Article ID: 213665

Article Last Modified on 11/23/2006

-

APPLIES TO


 * Microsoft Excel 2000 Standard Edition

-



This article was previously published under Q213665





SYMPTOMS
If you run a Microsoft Visual Basic for Applications macro that uses the IsDate function to determine whether an expression can be converted into a date, the function may return the Boolean value True. This result is incorrect.



CAUSE
This behavior can occur if the expression that is being evaluated by the IsDate function uses a date format that is not normally recognized as valid by Microsoft Excel. The following date formats are not recognized:   Format           Example -

year-day-month  2002, 5 July month-year-day  July, 2002 5 day-year-month  5, 2002 July Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact a Microsoft Certified Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Partners, please visit the following Microsoft Web site:

https://partner.microsoft.com/global/30000104

For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:

http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

For example, if you run the following macro Sub TestIsDateFunction MyDate = "2002, 5 July"  'an invalid date expression MsgBox IsDate(MyDate)    'is it a date? End Sub the message box displays True instead of False, even though the date is not valid in Microsoft Excel.



RESOLUTION
If an expression uses a date format that includes a year, a month, and a day in any order, the IsDate function returns True. There is no way to prevent this behavior.

However, you can use the CDate function to convert invalid expressions into valid dates; for example: Sub ConvertDate MyDate = "2002, 5 July"  'an invalid date expression CnDate = CDate(MyDate)   'convert MyDate into a valid date MsgBox CnDate            'display the new, valid date End Sub



MORE INFORMATION
Depending on the regional settings that are in use on your computer, Excel normally recognizes expressions that use any of the following formats as dates.   Format           Example -

month-day-year  July 5, 2002 day-month-year  5 July, 2002 year-month-day  2002, July 5 For example, if you type July 5, 2002 into a cell, Excel converts this expression into a proper date.

Expressions that use other formats (such as year-day-month) are not recognized as dates by Excel. However, because of the design of the IsDate function, it returns True for any expression that contains a year, a month, and a day in any order.

Additional query words: year2000 y2k year 2000 OFF2000 XL2000

Keywords: kbdtacode kbprb kbprogramming KB213665

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.