最近写的代码出了点问题,主要是在用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
以上。