bin gerade über folgende Problematik gestolpert:
Meine Funktionen erkennen, ob das 1904-Datumsmodell eingestellt ist, oder nicht. Damit kann ich die Ausgaben entsprechend um 1462 Tage anpassen, wenn nötig.
Wenn die Funktion einen Wert aus einem Zellbezug bekommt, ist auch alles in Ordnung. Stammt dieser aus einer Eingabe, dann bekommt sie den Wert OHNE 1904-Konvertierung.
Funktion:
Function Monatserster(ByVal Datum As Date) As Date
If Datum = TimeSerial(0, 0, 0) Then Exit Function
Monatserster = DateSerial(Year(Datum), Month(Datum), 1) + cAdj1904 * ActiveWorkbook.Date1904
End Function
Beispiel:
A1 enthält das Datum '08.11.2004'
Monatserster(A1) liefert '01.11.2004' in beiden Datumsmodellen.
MonatsErster(DATWERT("08.11.2004")) liefert mit 1904 '01.11.2000', sonst das richtige Ergebnis.
Wie kann ich in der Funktion erkennen, woher der Wert stammt?
Diese Funktion ist nur ein handliches Beispiel, ich weiß, dass es auch ohne VBA gemacht werden könnte. Das Problem wird richtig ernst, wenn eine Funktion zwei Datumswerte benötigt und der eine aus einem Zellbezug stammt und der andere aus einer Eingabe wie 'DATWERT("01.01.2004")'. Innerhalb der Funktion muss ich dann nur den einen um 1462 Tage anpassen.
Ich hoffe mal, damit kann jemand was anfangen und mir die Augen öffnen. 8)
Danke schon einmal fürs Lesen,
RogeR.