首页 > 解决方案 > 如何验证 YYYYMMDD 字符串是 Excel VBA 中的日期?

问题描述

日期以字符串形式提供,格式如下:20180503

该函数应该验证条目是:

  1. 在表格中YYYYMMDD
  2. 有效日期

以下代码不能解决问题:

Function formatDateYYYYMMDD(dateStr As String, dateFormat As String) As String
    Dim strToDate As Date
    strToDate = CDate(dateStr)
     If IsDate(strToDate) Then
        formatDateYYYYMMDD= format(dateStr, dateFormat)
     Else
        formatDateYYYYMMDD= "Not a date"
     End If
End Function

标签: excelvbadatedate-format

解决方案


也许:

编辑:原始 UDF 已更改,因为它不会标记某些无效格式日期。

Option Explicit
Function formatDateYYYYMMDD(dateStr As String, dateformat As String) As String
    Dim strToDate As Date
On Error GoTo invalidDate
If Len(dateStr) = 8 And _
    Left(dateStr, 4) > 1900 And _
    Mid(dateStr, 5, 2) <= 12 And _
    Right(dateStr, 2) <= 31 Then
        formatDateYYYYMMDD = Format(CDate(Format(dateStr, "0000-00-00")), dateformat)
    Exit Function
End If
invalidDate: formatDateYYYYMMDD = "Not a date"
End Function

On Error选取其他符合格式标准的无效日期:例如 9 月 31 日、2 月 30 日


推荐阅读