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

以上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章