Excel-VBA 中的函数IsDate()
应该识别给定的字符串是否/是否可以解释为日期。
但是这个宏:
Sub isdate_test()
If IsDate(Cells(1, 1)) Then
MsgBox "Yes"
Else
MsgBox "No"
End If
End Sub
例如,将“29.2.23”识别为日期。甚至将“50.2.21”也识别为“是”。有人知道为什么会发生这种情况吗?
IsDate()
因为这个原因,这对我来说毫无用处。
我忘了说了:日期应该这样读:DD.MM.YY
答案1
该isDate()
函数包括对“日期表达式”进行解释的能力。
日期表达式- 任何可以解释为日期的表达式,包括日期文字、看起来像日期的数字、看起来像日期的字符串以及从函数返回的日期。日期表达式仅限于数字或字符串的任意组合,可以表示从 100 年 1 月 1 日到 9999 年 12 月 31 日的日期。
日期作为实数的一部分存储。小数点左边的值表示日期;小数点右边的值表示时间。负数表示 1899 年 12 月 30 日之前的日期。
由于50.2.21
有 3 个不同的部分,因此它被解释为日期表达式。它很可能认为日期是公元 50 年 2 月 21 日(公元 150 年)。如果您的单元格的值包含文本“巧克力”,则会导致出现“否”消息框。
您也可以在即时窗口中测试这一点。以下是示例
a = isDate("50/2/21")
debug.print a
True
b = isDate("Chocolate")
debug.print b
False