ho dati in un foglio di Excel nel seguente formato:VBA convertire la stringa fino ad oggi
ItemCode DeliveryDate 5456987 24.01.2009 5456988 5456989 12.24.2009 5456990 12/24/2009
ho memorizzati i valori di DeliveryDate in un array. Devo prendere una decisione sulle basi della data e poi stampare il risultato in un nuovo foglio. Quindi devo convertire i valori in una matrice:
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)
Purtroppo, CDate() la funzione genera l'errore:
Run-time error '13':
Type mismatch
C'è una funzione in VBA che può:
- parse stringa con qualsiasi formato data e restituire un oggetto data con cui lavorare.
- restituisce un oggetto data vuoto, se la stringa è vuota o non valida (per il confronto nel ciclo).
Edit:
Per riprodurre l'errore, è sufficiente eseguire myDate = CDate("24.01.2009")
Secondo questo sito [http://www.example-code.com /vb/stringtodate.asp] lo stavi facendo bene..Qualora genera l'errore? Su quale riga - la prima o la seconda riga (stringa vuota)? Hai provato a cambiare il formato della stringa? Potresti voler cambiare il formato su come stai analizzando le stringhe di date lì. "24.01.2009" potrebbe non essere riconosciuto ma "12/24/2009" potrebbe - provare a convertire solo il 24/12/2009 e vedere se funziona. Se funziona, allora il formato 24.01.2009 potrebbe essere inaccettabile. –
Prova a convertire il 24/12/2009 per vedere se funziona. Se funziona, il formato dd.MM.yyyy potrebbe non essere utilizzabile per CDate. Potrebbe esserci un modo per specificare come è formattato in modo che possa analizzarlo esattamente nel modo desiderato. Se il formato dd.MM.yyy è quello che sta causando il problema, cambia il formato prima come sostituire "." con un "/" e prova a convertirlo di nuovo. Oppure formattarlo in modo che diventi MM/gg/aaaa e quindi convertirlo. Immagino che voglio solo sapere se "24/12/2009" uscirà o meno. Controlla prima e fammi sapere. –
@ AnnB., Beh, la mia prima domanda è; Esiste una funzione VBA che può analizzare la stringa con * qualsiasi * formato data e restituire un oggetto data con cui lavorare? –