问题
我正在尝试在数组中将 8 位数字转换为日期。条目的示例是 12282009 或 12202007。字段中还有其他格式错误的条目,包括以字符串形式输入的日期。我希望将 8 位数字分别格式化为 12/28/09 或 12/20/07。我在下面的倒数第三行不断收到类型不匹配错误。我该怎么做呢??
代码
Dim del()
ReDim del(1 To importwsRowCount, 1 To 1)
del = Range("AH1:AH" & importwsRowCount).Value
Dim delChars As Long
Dim delType As String
For i = LBound(del, 1) To UBound(del, 1)
delChars = Len(del(i, 1)) 'Determine length of entry
If IsNumeric(del(i, 1)) = True Then 'Determine datatype of entry
delType = "Numeric"
del(i, 1) = Abs(del(i, 1))
Else
delType = "String"
del(i, 1) = UCase(del(i, 1))
End If
If delType = "Numeric" Then
If delChars = 8 Then
del(i, 1) = DateSerial((Right(del(i, 1), 4)), (Left(del(i, 1), 2)), (Mid(del(i, 1), 3, 2))) '<-- TYPE MISMATCH ERROR
End If
End If
输入模板
九月。25, 20(没有年份,没有年份!删除。)
SEPT(没有年份,没用,删除。)
N/A(垃圾!删除。)
LONG TIME AG(傻瓜认为这是个好主意,删除。)
6 月 30 日, 200(显然该字段只能保存 12 个字符,删除。)
CHARGED OFF(无用,删除。)
94 DAYS(取空格前的所有字符并从包含订单日期的其他字段中减去以获得拖欠日期。)
94 DPD(DPD in某人聪明的头脑代表我相信过期的日子。同上。)
2008-7-15 12(不确定额外的数字是什么,取空格前的所有字符并转换。)
无效(删除。)
空白(什么都不做。)
4/2/4/09(格式错误的日期,删除。)
009年 1 月 1 日(同上。)
12282009(使用嵌套的 LEFT 和 RIGHT 以及 CONCATENATE 与 / 之间。)
9202011(添加前导零,然后同上。)
92410(添加前导零,这将转换为 09/24/10)
41261(自 31/12/1899 以来的天数,这将转换为 12/08/12)
1023(自拖欠的天数,从 ORDER DATE 中减去得到拖欠日期。)
452(同上。)
12(同上。)
1432.84(货币价值,被低智商的仆人错误输入。删除。)