vba里面的日期数据转换异常(Format error)(使用IsDate方法部分解决)

最近写的代码出了点问题,主要是在用format转换日期格式的时候抛了异常,错误代码如下:

sheetDetail.Cells(i, LINENUM).Value = Format(dataValidityArr(6)).Value, "yyyymmdd")

查看数据的时候发现,有些日期原始数据就已经是yyyymmdd的格式了,所以再进行format转换就异常了。
修改如下:

If IsDate(dataValidityArr(6)).Value) Then
    sheetDetail.Cells(i, LINENUM).Value = Format(dataValidityArr(6)).Value, "yyyymmdd")
Else
    sheetDetail.Cells(i, LINENUM).Value = dataValidityArr(6)).Value
End If

用了IsDate来判断是否是可以进行format转换的数据。
但是这样也还是有问题,因为最终生成的数据格式要求是yyyymmdd,如果原始格式为mmddyyyy或者别的稀奇古怪的格式的话,生成出来的就不符合需求。
(数据源格式可变性特别大,所以也没法限制死某一列单元格的格式为特定日期格式)
姑且还没有想到什么好办法,只能先限制客户的输入了。
目前试下来,IsDate可以针对以下几种格式做出True的判断:

2019-06-13
06-13-2019
2019-06-13
06/13/2019
Jun-13-2019
June-13-2019

而对于以下的格式判断结果则为False:

20190613
2019.6.13
2019.06.13
06.13.19
06.13.2019

以上。

你可能感兴趣的:(vba)