Harald Friis schrieb am Sun, 31 Jan 2016 14:27:24 +0100:
> so isses tatsächlich. Der 11. Januar aus Excel wird im Serienbrief
> korrekt dargestellt. aber in VBA konsequent als 1. November behandelt
> (und auch so per MsgBox ausgewiesen)
So wie es aussieht, wird das Datum aus Excel (zumindest in Office 2010,
andere habe ich nicht zum Testen) als String im Format "Monat/Tag/Jahr"
übergeben. Dann bietet es sich an, an Stelle von cDate eine eigene
Umwandlungsfunktion zu benutzen:
Function ExcelDatumToDate(ExcelDatum As String) As Date
'Umwandlung eines Datumstrings in der Form "monat/tag/jahr"
'in den Datentype Date
Dim Pos1 As Integer, Pos2 As Integer
Dim Tag As Integer, Monat As Integer, Jahr As Integer
Pos1 = InStr(ExcelDatum, "/")
Pos2 = InStr(Pos1 + 1, ExcelDatum, "/")
Monat = Val(Left(ExcelDatum, Pos1 - 1))
Tag = Val(Mid(ExcelDatum, Pos1 + 1, Pos2 - Pos1))
Jahr = Val(Mid(ExcelDatum, Pos2 + 1))
ExcelDatumToDate = DateSerial(Jahr, Monat, Tag)
Debug.Print ExcelDatum & " --> " & ExcelDatumToDate
End Function
Gegebenenfalls solltest Du noch die Werte auf Plausibilität testen
(Pos1, Pos2 > 0; Tag, Monat, Jahr im richtigen Bereich), falls in der
Excel-Tabelle im entsprechenden Feld einmal kein Datum steht.
Gruß Heiko
--
So mancher meint, ein gutes Herz zu haben, und hat nur schwache Nerven.
Marie Freifrau von Ebner-Eschenbach