我有一個excel工作表以下列格式數據:VBA轉換字符串到日期
ItemCode DeliveryDate 5456987 24.01.2009 5456988 5456989 12.24.2009 5456990 12/24/2009
我已經存儲在數組DeliveryDate的值。我需要決定日期的基礎知識,然後將結果打印在新的工作表中。所以,我必須將這些值轉換成數組:
Dim current as Date, highest as Date, result() as Date
For Each itemDate in DeliveryDateArray
current = CDate(itemDate)
if current > highest then
highest = current
end if
' some more operations an put dates into result array
Next itemDate
'After activating final sheet...
Range("A1").Resize(UBound(result), 1).Value = Application.Transpose(result)
不幸的是,CDATE()函數引發錯誤:
Run-time error '13':
Type mismatch
是否有VBA一個功能,可以:
- 解析字符串與任何日期格式並返回一個日期對象來處理。
- 返回一個空的日期對象,如果該字符串爲空或格式錯誤(用於循環中的比較)。
編輯:
重現錯誤,只需運行 myDate = CDate("24.01.2009")
據本網[http://www.example-code.com /vb/stringtodate.asp]你這樣做是正確的。它在哪裏拋出錯誤?在哪一行上 - 第一行或第二行(空字符串)?你有沒有嘗試改變字符串格式?你可能想要改變你在那裏解析你的日期字符串的格式。 「2009年1月24日」可能不被承認,但「2009年12月24日」可能 - 嘗試轉換2009年12月24日只,並看看它是否有效。如果確實有效,那麼2009年1月24日的格式可能是不可接受的。 – 2012-07-21 02:58:14
嘗試轉換12/24/2009以查看它是否有效。如果它確實起作用,那麼格式dd.MM.yyyy可能不適用於CDate。您可能有一種方法可以指定它的格式,以便可以按照您希望的方式進行解析。如果dd.MM.yyyy格式是導致問題的原因,請首先更改格式,例如替換「。」。用「/」並嘗試再次轉換它。或將其格式化爲MM/dd/yyyy,然後將其轉換。我想我只想知道「12/24/2009」是否會出錯。先檢查並讓我知道。 – 2012-07-21 03:08:54
@AnnB。,我的第一個問題是,是否有一個VBA函數可以用任何*日期格式解析字符串並返回一個日期對象來處理? – 2012-07-21 03:12:59