Excelシートに次の形式のデータがあります。
アイテムコード配送日 5456987 2009年1月24日 5456988 5456989 12.24.2009 5456990 2009年12月24日
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()関数はエラーをスローします。
実行時エラー '13':
型の不一致
VBAには次の機能がありますか?
編集:
エラーを再現するには、単にmyDate = CDate("24.01.2009")
を実行します
Replace
を使用して、うまくいくかどうかを確認してください。上記で何度か言及されているように、私が目にする問題は、CDate関数が期間を窒息させていることです。 replaceを使用して、それらをスラッシュに変更できます。任意の日付形式を解析できるvbaの関数についての質問に答えるために、非常に限定されたオプションはありません。
Dim current as Date, highest as Date, result() as Date
For Each itemDate in DeliveryDateArray
Dim tempDate As String
itemDate = IIf(Trim(itemDate) = "", "0", itemDate) 'Added per OP's request.
tempDate = Replace(itemDate, ".", "/")
current = Format(CDate(tempDate),"dd/mm/yyyy")
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)
私はこのコードを使用しました:
ws.Range( "A:A")。FormulaR1C1 = "= DATEVALUE(RC [1])"
列Aはyyyy/mm/ddになります
RC [1]は列B、テキスト文字列、たとえば01/30/12、これはIS NOT DATE TYPEです。
空のデータ行でエラーをスローしている可能性があるようです。CDate()関数を実行する前に、itemDateが空でないことを確認しようとしましたか?これはあなたの問題かもしれないと思います。