在实际中,有一次,遇到一个Access的不完全安装版(2007 4N1版),在使用 Format 函数格式化日期时出现 “Format”函数未定义的错误,在创建查询时用“format”函数,出现问题。为了不重新安装Office,自定义了这个函数,获取日期类似“2020-12-18星期一”中的日期,一般在做系统是考虑不受控制面板的影响,把“日期字段”设置成文本型为好。这个函数还有一个问题,就是日期的最后两位,如果输入时写入“ "2020\1\345678"”,获取的结果将会是“2020-01-34”,如果写成“ "2020\1\3 4567"”,在3的后面有一个空格或是汉字,结果就不会错误,请各位老师帮助完善,谢谢。
Function 提取日期(Optional a As String) As String
'适用于 "2020\1\1"+(至少1个空格或1个非数字字符)+其他任意字符
'调用:提取日期(字符串)
'返回:yyyy-mm-dd
Dim b As String
Dim c As String
Dim d As String
d = Left(a, 4)
If Not IsNull(a) Then
If Right(Mid(a, 5, 3), 1) = "\" or Right(Mid(a, 5, 3), 1) = "-" Then
b = Left(a, 4) & "-0" & Mid(a, 6, 1)
c = Val(Mid(a, 8, 2))
If Len(c) = 1 Then
c = "-0" & Mid(a, 8, 1)
Else
c = "-" & Mid(a, 8, 2)
End If
Else
c = Val(Mid(a, 9, 2))
b = Left(a, 4) & "-" & Mid(a, 6, 2)
If Len(c) = 1 Then
c = "-0" & Mid(a, 9, 1)
ElseIf Len(c) >= 2 Then
c = "-" & Mid(a, 9, 2)
End If
End If
提取日期 = b & c
End If
End Function