をこれまでに文字列を変換:VBA Iは、次の形式でExcelシートにデータを持っている
ItemCode DeliveryDate 5456987 24.01.2009 5456988 5456989 12.24.2009 5456990 12/24/2009
Iは配列内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での機能があります文字列はとなり、日付形式はとなり、日付オブジェクトが返されます。
- 文字列が空であるか型が不正な場合(ループ内での比較のため)、空の日付オブジェクトを返します。
は編集:
エラーを再現するには、単にあなたが念itemDate ISNを作ってみましたが、それは空のデータ行にエラーを投げることができたよう myDate = CDate("24.01.2009")
されていません[http://www.example-code.com /vb/stringtodate.asp]正しいことをしていました...どこにエラーがありますか?どちらの行に - 最初の1行か2行目(空の文字列)?文字列形式を変更しようとしましたか?日付文字列を解析する方法の形式を変更したい場合があります。 「2009年12月24日」は認識されないかもしれませんが、12/24/2009のみを変換し、それが動作するかどうかを確認してください。それがうまくいけば、24.01.2009フォーマットは受け入れられないかもしれません。 –
2009/12/24を変換して動作するか試してみてください。それがうまくいけば、dd.MM.yyyyという形式はCDateのために使用できないかもしれません。どのようにフォーマットされているかを指定する方法があるかもしれません。 dd.MM.yyyy形式が問題の原因になっている場合は、最初に "。" "/"を付けてもう一度変換しようとします。または、MM/dd/yyyyになるようにフォーマットしてから変換します。私はちょうど "12/24/2009"が間違っているかどうかを知りたいと思う。最初に確認して、私に知らせてください。 –
@AnnB。、よく私の最初の質問です。 *任意の*日付形式で文字列を解析し、日付オブジェクトを返すことができるVBA関数はありますか? –