最近寫的代碼出了點問題,主要是在用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
以上。