excel - 如何验证 YYYYMMDD 字符串是 Excel VBA 中的日期?
问题描述
日期以字符串形式提供,格式如下:20180503
该函数应该验证条目是:
- 在表格中
YYYYMMDD
- 有效日期
以下代码不能解决问题:
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
解决方案
也许:
编辑:原始 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 日
推荐阅读
- node.js - 错误ClientException:在fargate terraform中networkMode = awsvpc时不支持链接
- android - 如何将 ViewCompat.setBackgroundTintList 转换为“xml”?
- android - 带有本机代码的 Expo 包(objective-c 和 java)
- vue.js - 滚动到 v-data-table 中的第一个选定行
- r - 合并具有相似列名/相似列字符串的列 - Reprex
- javascript - Sendinblue create contact 'TypeError: Failed to fetch' 错误(使用 React)
- r - 循环遍历列表或 R 中的矩阵
- c++ - C++ 使用重载的 << 输出重载的一元 + / - 运算符
- javascript - TypeError - invalid login
- c - c语言中的变量溢出?