Hallo Reinhard,
schade, grad bei der einen langen Feldfunktion dachte ich da
wär was dabei, grad das mit daysinmonth.
Dieses „daysinmonth“ habe ich leider nirgendwo in Word einsetzen können.
Hier jedoch meine Lösung:
{IF DTag 0 {DTag} {IF{=OR({=OR(DMonat=4;DMonat=6)};{=OR(DMonat=9;DMonat=11)})} = 1 „30“ {IF{=AND(DMonat=2;{OR({=Mod(DJahr;4)}=0;{Mod(DJahr;400)}=0)})} = 1 „29“ {IF{=AND(DMonat=2;{OR({=Mod(DJahr;4)}0;{Mod(DJahr;400)}0)})} = 1 „28“ „31“}}}}
„DTag“, „DMonat“ und „DJahr“ sind die entsprechend vorher ausgerechneten Ergebnisse für den (Neuen) Tag, Monat und Jahr (Erläuterungen siehe unten). Diese drei sind entsprechend auch Textmarken in Textformularfeldern.
Er überprüft erst ob der „Tag“ = 0 Ist. Dies ist der Fall wenn der Ausgangstag der „1.“ eines Monats ist und das Ende des Zeitraums (s. unten) einen Tag „vorher“ ist. Ist also das Ende ein „2. - 30.“ dann nimmt er den Tag so wie er da ist.
Danach prüft er ob der „Monat“ April, Juni, September oder November ist und nimmt den Wert 30. Danach prüft er ob „Monat“ Februar ist und ob die Bedingungen für ein Schaltjahr vorliegen. Ist dies der Fall nimmt er in diesem einen Fall 29 Tage.
Danach prüft er ob der „Monat“ Februar ist und KEIN Schaltjahr vorliegt, dann nimmt er 28 Tage und ansonsten 31 Tage.
Blöd ist, dass die AND- und OR-Funktion jeweils nur 2 Werte immer annehmen. So musste ich die 4 Werte (bei der „30“) in zwei verschachtelte OR-Funktionen einbetten.
Hier jedoch noch einmal konkret was ausgerechnet wurde:
Es soll, von einem einzugebenden Anfangsdatum (Textmarke: „Dvon“) und dem einzugebenen Enddatum (Textmarke: „Dbis“) eine 3-Monats-Frist ausgerechnet werden. Ist das Datum „Dbis“ kleiner als die 3 Monate dann soll mit dem Datum „Dbis“ weitergerechnet werden. Ist „DBis“ grö-ßer dann nur mit den max. 3 Monaten.
Meine Überlegung war:
Der „DTag“ ist immer der „Dvon“-Tag „minus“ 1.
{={Dvon @ „dd“}-1}
Textmarke: DTag
In einer weiteren Berechnung prüfe ich ob „DTag“ Null ist. Ist dies der Fall soll er mir dort eine 1 eintragen ansonsten eine 0.
{If{={Dvon @ „dd“}-1} = 0 1 0}
Textmarke: DTagRest
Der neue Monat wird berechnet durch
{IF{={Dvon @ „MM“ }+3-DTagRest} > 12 {={Dvon @ „MM“}-9-DTagRest} {={Dvon @ „MM“}+3-DTagRest} # 00}
Textmarke: DMonat
Nun notiere ich noch ob die Monatsanzahl über den Jahreswechsel geht
{={Dvon @ „MM“}+3-DTagRest}
Textmarke: DMonatRest
Das Jahr errechnet sich nun wie folgt:
{If DMonatRest > 12 {={Dvon @ „yyyy“}+1 {={Dvon @ „yyyy“}}}
Textmarke: DJahr
Das so errechnete Datum der 3-Monats-Frist wurde zusammengeschrieben und unter der Textmarke „MaxDatum“ erfasst
Das „Dvon“-Datum, das „Dbis“-Datum und das „MaxDatum“ wurden in einer Tabelle aufgeschlüs-selt (Tabelle wird versteckt dargestellt später)
mit
{Dvon @ „dd“}
{Dvon @ „MM“}
{Dvon @ „yyyy“}
in den Zellen B2, C2 und D2 bzw. B3, C3 und D3 bzw. B7, C7 und D7 (in den Zeilen 4 – 6 ist die oben beschriebene Datumsberechnung).
„Dbis“ muss natürlich angepasst werden.
Nun hat Word ein Problem. Wenn ich die Formel eingebe {={Dvon}} schreibt er mir eine 5 oder 6-stellige Zahl hin, die man nicht mehr gut zurückverfolgen kann: aus 03.06.2008 wird 62011 (Die 6 steht für den Monat, die 2011 ist das Ergebnis aus „2008“ + „3“). Die 62011 könnte aber auch der 02.06.2009 sein … 
Deshalb nutze ich zur Differenz-berechnung folgende Formel:
(Jahr – 1) * 365 + (Monat – 1) * 31 + Tag. So kommt man auf eine eindeutige Zahl.
Die Zahl für das Datum „Dvon“ berechnet sich also mit
{=(D2-1)*365+(C2-1)*31+B2}
Die Formeln für die Zahlen für „Dbis“ und „MaxDatum“ werden dem entsprechend angepasst mit Zeile 3 und Zeile 7. Die Textmarken dazu lauten „TatsEnde“ und „MaxEnde“.
Nun prüfe ich in einem letzten Schritt welches Datum genommen werden muss:
{If TatsEnde